symfonyはじめました

PHPのフレームワークsymfonyを使っての開発備忘録を中心に、WEBアプリケーション開発日記

2008.11.21/Fri  22:44:24

index.php(フロントコントローラー)からmoduleとactionが決まるまで
途中細かいところは省略をしていますが、ざっと整理してみました。

SF_ROOT_DIR/web/index.php
SF_ROOT_DIR/apps/名前/config/名前Configuration.class.phpをnew
ProjectConfiguration.class.phpのコンストラクタが呼ばれる
コアクラスオートロードの設定
sfEventDispatcherをnew
ルートディレクトリの初期化
オートロードの設定
プラグインのconfig.phpを読み込む
sfContextをnew
sfContextにConfigurationをセット
sfContextにEventDispatcherをセット
sfDatabaseManagerをnew
sfActionStackをnew
cach内のconfig/factories.ymlを読み込み実行
sfWebDebugLoggerをnewしてContextにセット
sfFileLoggerをnewしてContextにセット
sfI18NをnewしてContextにセット
sfPatternRoutingをnewしてContextにセット
ルーティングの設定の初期化・読み込み
sfFrontWebControllerをnewしてContextにセット
sfWebRequestをnewしてContextにセット
$_GETや$_POSTをrequest内にセット
同時にgetPathInfoからmoduleとactionを決定
sfWebResponseをnewしてContextにセット
sfSessionStorageをnewしてContextにセット
myUserをnewしてContextにセット
キャッシュがONならsfSessionStorageをnewしてContextにセット
sfFrontWebController::dispatch()をコール
sfWebRequestからmoduleとactionを取得
moduleとactionにforward

コードをたどってみて思ったのは意外に軽そうというか、工夫されてるなと思いました。
例えば$_SERVERなんかをsfWebRequestにセットするところも参照をセットしていたり、思っていたよりインスタンス化されてるクラスも少なかった。
またContextに全部セットしてどこからでもアクセスできるやり方はすごいと思った。
恐るべしマーティン・ファウラー。
気になったのはsfWebRequestでmoduleとactionを決定するところで

return $this->dispatcher->filter(new sfEvent(
  $this,
  'request.filter_parameters',
  array('path_info' => $this->getPathInfo())
), array())->getReturnValue();
というコードを呼び出してます。 何が行われてるのかよくわかりません。 とりあえず、今後イベントのコードを読み解いてみたいと思います。

[symfony 1.1.5]
category: symfony
TB: 0  |  COM: 0
go page top

 

この記事に対するコメント

コメント投稿

管理者にだけ表示を許可する

go page top