toma-stkのCakePHP自習室

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

今回は「/cake/dispatcher.php」を解析してます。(めちゃめちゃ手強そう…)

このファイルはbootstrap.phpでrequireされた後に、「app/webroot/index.php」で

インスタンス化され、dispatchメソッドにURLリクエスト変数を渡しています。

(※<?phpハイライトカラーを有効にするために記述しています)

<?php
$Dispatcher = new Dispatcher();
$Dispatcher->dispatch($url);
?>

で、dispatcher.phpでは引数の$url変数をプライベートメソッドで何かしています。

<?php
$params = array_merge($this->parseParams($url), $additionalParams);
?>

parseParams()メソッドの動きを追ってみます。

すると今度はRouteクラスのparseメソッドに引き渡されました。

<?php
$Route = new Router();
include CONFIGS.'routes.php';
$params = $Route->parse ($from_url);
?>

しつこく、Routeクラスが定義されている「cake/libs/router.php」を追ってみます。

これまた、複雑そうな処理がずらずら出てきてしまいました。

なんか、面倒になってきたので一旦この辺で区切ろうと思います。

ちなみに適当なファイルに下記のような処理をほどこしたところ…

<?php
$Route = new Router();
include CONFIGS.'routes.php';
$params = $Route->parse ('users/login/aaaa/bbbb/cccc/dddd?a=A&b=B');

pr($params);    //結果出力
?>

このような結果が返ってきました。

Array
(
    [pass] => Array
        (
            [0] => aaaa
            [1] => bbbb
            [2] => cccc
            [3] => dddd
        )
    [controller] => users
    [action] => login
)

次回は、更につっこんで解析してみます。

ゲスト



トラックバック - http://studyroom.g.hatena.ne.jp/toma-stk/20080205