タグ

ブックマーク / www.1x1.jp (6)

  • Lithiumのフィルタシステム

    次世代CakePHPとも言うべきフレームワークLithiumのフィルタシステムを見てみました。 Lithiumは対象がPHP5.3以上ということで、5.3ならではの機能を活用したアーキテクチャになっています。中でも特徴的なのがフィルタシステムです。 全体のアーキテクチャとしては、CakePHPの流れを汲んで標準的なMVCフレームワークになっています。ただそれを実現する手段としてフィルタシステムを多用しています。これまでのフレームワークとは異なる点があり、いざフレームワークの動きを掴もうとすると戸惑います。 そこでLithiumのフィルタシステムをざっくりと見てみましょう。 サンプルソース サンプルとして、SampleControllerとそのビューテンプレートを用意します。 フィルタの動きを見るだけなので、indexアクションでは、ログに__METHOD__を記録するだけです。 [app/

    kazukichop
    kazukichop 2011/02/10
    写経してみたら仕組みがよくわかった。よくできてるなぁ。
  • CakePHP core.phpの設定をbootstrap.phpに書く

    CakePHPでDebug Levelなどの設定を変更する際は、core.phpを修正するのが一般的です。インストール直後にSecurity.saltを変更するのはお馴染みですね。 そんなcore.phpですが、実はこの設定はbootstrap.phpに記述してもokです。例えば以下のようにDebug Levelをbootstrap.phpに記述するとDEBUG=0として動作します。 [app/config/bootstrap.php] Configure::write('debug', 0); coreはそのままで、差分をbootstrapに この方法で何が嬉しいかと言うと、デフォルトの設定をcore.phpに残したまま、変更すべきものだけをbootstrap.phpに書くということができるという点です。 変更したものがはっきり分かりますし、元の設定がどうだったかをすぐに確認することがで

  • CakePHP routes.phpの確認はユニットテストで

    routes.phpを仕様に合わせて設定しておきます。 <?php // Router::connect('/:user_id/edit', array('controller' => 'user', 'action' => 'edit')); Router::connect('/', array('controller' => 'top', 'action' => 'index')); Router::connect('/:user_id/*', array('controller' => 'user', 'action' => 'index')); // Nothing Router::connect('*', array('controller' => 'nothing')); ?> 最後はシステムが取るべきURL以外ならNot Foundを出すように設定しています。これにより想定外

  • PHPソースからドキュメントを生成するツール

    PHPソースからドキュメントを生成する主要な3ツールを試してみました。どのツールもそれほど深くは調べていないのでインストール+アルファ程度の設定変更で試しています。 環境はCentOS4.4+PHP5.2.3です。 phpDocumentor PHPでできたツールです。pearコマンドでインストールできることもあって、PHPのドキュメントジェネレータとして人気があります。 インストール pearコマンドでインストールできます。 $ pear install --alldeps phpdocumentor ドキュメント生成 phpdocコマンドで生成します。とりあえずドキュメントを生成するだけなら設定ファイルの変更は不要です。 ./src 以下のPHPファイルを対象に ./doc 以下にドキュメントを生成 $ phpdoc -t ./doc -d ./src [参考サイト] phpDocum

  • PHP 5.2.4 の新機能

    PHP5.2.4がリリースされています。 基バグフィックス&セキュリティアップデートのようなので大きな変更はありませんが、ChangeLogから興味を引いた変更点をメモしておきます。 –enable-versioningの廃止 追加機能では無いですが。 PHP3/PHP4を同時にApacheモジュールとして実行できるオプションでしたが、今回廃止されました。まあ昨今ではさすがに使っている人はいないでしょうけど、PHP3->PHP4の移行期には必須とも言えるオプションだったので、感慨深いものがあります。 PHPエラーをstderrに出力可能に CGI/CLI版では、display_errors=stderrに設定することにより、PHPエラーをstderr(標準エラー)に出力することができるようになりました。なおデフォルトではこれまでどおりstdoutに出力されます。 stderrPHPエラ

  • PHPオブジェクトは配列より遅いか

    以前のエントリでもあったようにPHPのオブジェクトは配列より遅いという印象があります。 実際にどの程度違いがあるかをPHP4/5で計ってみました。 計測方法 各ソースを100回実行した平均を出しています。実行環境はPHP4は4.4.4、PHP5は5.1.6(共にCLI版)です。実行時間の計測にはPEAR::Benchmark_Timerを使いました。 各ソースでは配列、Hogeクラス(オブジェクト変数なし)、Hoge2クラス(オブジェクト変数あり)を計測しています。なおHoge/Hoge2クラスは以下になります。 < ?php class Hoge { } class Hoge2 { var $id; var $name; } ?> 生成 配列・オブジェクトを1000回生成しています。[ソース] PHP4 実行時間 比率

  • 1