- 2008-07-05 (土) 22:45
今回は「/cake/dispatcher.php」を解析してます。(めちゃめちゃ手強そう…)
このファイルはbootstrap.phpでrequireされた後に、「app/webroot/index.php」で
インスタンス化され、dispatchメソッドにURLリクエスト変数を渡しています。
[sourcecode language='php']
$Dispatcher = new Dispatcher();
$Dispatcher->dispatch($url);
[/sourcecode]
で、dispatcher.phpでは引数の$url変数をプライベートメソッドで何かしています。
[sourcecode language='php']
$params = array_merge($this->parseParams($url), $additionalParams);
[/sourcecode]
parseParams()メソッドの動きを追ってみます。
すると今度はRouteクラスのparseメソッドに引き渡されました。
[sourcecode language='php']
$Route = new Router();
include CONFIGS.’routes.php’;
$params = $Route->parse ($from_url);
[/sourcecode]
しつこく、Routeクラスが定義されている「cake/libs/router.php」を追ってみます。
これまた、複雑そうな処理がずらずら出てきてしまいました。
なんか、面倒になってきたので一旦この辺で区切ろうと思います。
ちなみに適当なファイルに下記のような処理をほどこしたところ…
[sourcecode language='php']
$Route = new Router();
include CONFIGS.’routes.php’;
$params = $Route->parse (‘users/login/aaaa/bbbb/cccc/dddd?a=A&b=B’);
pr($params); //結果出力
[/sourcecode]
このような結果が返ってきました。
Array
(
[pass] => Array
(
[0] => aaaa
[1] => bbbb
[2] => cccc
[3] => dddd
)
[controller] => users
[action] => login
)
次回は、更につっこんで解析してみます。
コメント:0
トラックバック:0
- このエントリーへのトラックバックURL
- http://www.studio-kingdom.com/cakephp/cakephp_analysis/132/trackback