dispatcher.php – $Route->parse【その壱】 (CakePHP解析 #7)

  • 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

コメントフォーム
Remember personal info

トラックバック:0

このエントリーへのトラックバックURL
http://www.studio-kingdom.com/cakephp/cakephp_analysis/132/trackback
フィード

メタ

Return to page top