PHPは日々進化している 最重要な言語仕様の変更点 PHP 5.3.x 名前空間 レイトスタティックバインディング クロージャ PHP 5.4.x trait ビルドインサーバ クロージャで$this PHP 5.5.x ジェネレーター Composer PHPにとってのBundler PEARの環境依存やめよう PECL?知らん PSR-4 includeやrequireをもう使う必要はない PSR-4の規約にそって名前空間とディレクトリを掘ろう そしてcomposer.jsonにちょいちょいと { "autoload": { "psr-4": { "mynamespace\\": "src/" } } } そしてbootstrapに相当するphpスクリプトに require_once 'vendor/autoload.php'; これだけで後はuseをjavaのimportに相当するも
元ネタはこちら。 Apache AddHandler madness all over the place Gentoo Bug 538822 どういうことか 次のような指定は危険である。 AddHandler php5-script .php この時に指定される.phpはファイル名の末尾である必要はない。例えば、 aaa.php.html bbb.php.pngなどもphp5-scriptとして解釈されてしまうのだ。これは.XXX.YYYと複数の拡張子が書かれた場合、.XXXと.YYYもAddHandlerの対象となることが原因。 ちなみに次のような場合にはphp5-scriptとして解釈されない。 ccc.php_foo (.php_fooとして解釈されるため) ddd.php_bar.html (.php_barと.htmlとして解釈されるため)実はこのことはApacheのドキュメン
まずは以下のサンプルをご覧ください。サーバーはWindowsで、内部・外部の文字エンコーディングはUTF-8です。UTF-8のファイル名を外部から受け取り、Windowsなのでファイル名をShift_JISに変換してファイルを読み込んでいます。basename関数を通すことにより、ディレクトリトラバーサル対策を施しています。 <?php header('Content-Type: text/plain; charset=UTF-8'); $file_utf8 = basename($_GET['file']); $file_sjis = mb_convert_encoding($file_utf8, 'cp932', 'UTF-8'); $path = './data/' . $file_sjis; var_dump($path); readfile($path); しかし、ディレクトリト
普段 Scala でトレイトを使いまくってるけれども PHP にも 5.4 からトレイトが入った。 trait の良いところは多重継承のできない言語で多重継承っぽいことができることだ。 use, use とつけていけば、いくらでも追加できる。DRY に書けてよいことだ。 対して悪いところはいとも簡単に複雑で暗黙的な依存関係が生まれることだ。 例えばこんなの <?php trait Greeting { public function say() { if ($this->location == 'ja') { echo 'こんにちは' . PHP_EOL; } else { echo 'Hello' . PHP_EOL; } } } class Location { } class US extends Location { use Greeting; private $location
JPHPというJavaで書かれたPHP処理系があります。これは2013年10月にはじまった新しいプロジェクトで、大半をメイン開発者一人で開発しているようですが、既に一定以上の完成度です。また、内部的にはPHPファイルを解釈して直接Javaバイトコードにコンパイルしており、かなり高速なPHP処理系になっています。 他のPHP処理系と異なり、既存のPHPコードをWebサーバ上で動かすことを重視していないようにも見えますが、興味深いプロジェクトですので紹介します。 JPHPを動かしてみる さっそくJPHPを試してみましょう。現時点ではGitHubからソースコードを持ってきてビルドする必要があります。JDK7以上が必要ですので注意してください。JPHPのドキュメント「Getting Started」の通り、次のようにしてJPHPがビルドできます。 $ git clone https://githu
各解法ごとのアルゴリズム解説を公開しました! POH2 解法を図解で解説!(2014/5/28) 応募受付期間終了しました。ブログにて結果発表中です! POH2 結果発表【最速コード発表中!】(2014/5/21) 模範解答Vol.3(動的計画法)を公開しました。 模範解答を見る(会員登録が必要です)(2014/4/30) 開発したいプログラム インターンを締めくくる開発発表として、あなたの会社の得意先であるcodomo社から受注したスマートフォン向けの新OS paizen(パイゼン)を開発中の木野さんは、今、ホーム画面へのウィジェット配置機能の実装を考えています。現在のホーム画面に対し、指定されたウィジェットが配置可能な場所をすべて求める機能を実装することにしましたが、どうやら苦戦中のようです。 ホーム画面の現在のウィジェット配置状態と複数のウィジェットが与えられるので、それぞれのウィジ
昨日エントリ( http://uzulla.hateblo.jp/entry/2014/03/08/050621 )を書いたKodingですが、詳しくは昨日のエントリを見ていただくとして、今度発売される「Webアプリエンジニア養成読本」をKodingで勉強するにはどうすればよいか書いてみます。 Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus) 作者:和田 裕介,石田 絢一 (uzulla),すがわら まさのり,斎藤 祐一郎技術評論社Amazon 結果として、Kodingをつかえば、ChromeやFirefoxがPCにはいっていれば、PCに何もインストールすることなくブラウザ一つで学習ができました。 このエントリに記載されていること ・Kodingのアカウント取得 ・画面の簡単な説明 ・PHPをちょっ
「JSON文字列へのインジェクション」と「パラメータの追加」:NoSQLを使うなら知っておきたいセキュリティの話(2)(1/2 ページ) MongoDBを用いたWebアプリケーションで生じる可能性がある4種類の脆弱性のうち、今回は「JSON文字列へのインジェクション」と「パラメータの追加」のメカニズムと対策について説明します。 前回の「『演算子のインジェクション』と『SSJI』」では、MongoDBを用いたWebアプリケーションで生じうる脆弱性のうち「演算子のインジェクション」と「SSJI」について、攻撃の実例と対策について解説しました。今回はさらに、「JSON文字列へのインジェクション」と「パラメータの追加」について説明します。 JSON文字列へのインジェクション これまで見てきたように、PHP言語においては連想配列を指定してデータの登録処理や検索処理を実行できます。しかし型の扱いが厳格
LAMP環境、自分で作りませんか? 連載:仕事で使える魔法のLAMP(1) Webアプリケーションの開発・実行環境として高い人気を誇るLAMP。ソースコードからビルドしてみませんか?
アプリケーションをよりすばやく提供 サーバーの運用に悩まされず、アプリケーションに集中することができます Engine Yardではオープンソース技術を活用し、クラウド上でのアプリケーションのデプロイ、設定、管理のオートメーションとオーケストレーションを行います。これにより、お客様はアプリケーションをよりすばやく提供できるようになるほか、気に掛けなければならない管理業務が削減され、アプリケーションの開発に専念する時間を拡大することができます。 製品ツアー(動画)を見る
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く