dispatcher.php – $Route->parse【その壱】 (CakePHP解析 #7)
Sat, Jul 5, 2008今回は「/cake/dispatcher.php」を解析してます。(めちゃめちゃ手強そう…)
このファイルはbootstrap.phpでrequireされた後に、「app/webroot/index.php」で
インスタンス化され、dispatchメソッドにURLリクエスト変数を渡しています。
$Dispatcher = new Dispatcher(); $Dispatcher->dispatch($url);
で、dispatcher.phpでは引数の$url変数をプライベートメソッドで何かしています。
$params = array_merge($this->parseParams($url), $additionalParams);
parseParams()メソッドの動きを追ってみます。
すると今度はRouteクラスのparseメソッドに引き渡されました。
$Route = new Router(); include CONFIGS.'routes.php'; $params = $Route->parse ($from_url);
しつこく、Routeクラスが定義されている「cake/libs/router.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 )
次回は、更につっこんで解析してみます。