スタティックルートを集約してみた

部分一致ルールと再帰ルーターを実装したので、もう一つ、スタティックなルートを集約して扱うルートを作成した。
主にCMSなどでサイト内のセグメントを分割したり、独立ページを自由に配置したいときなどに利用する。
Zend_Controllrer_Router_Route_Staticに対するconfigの割り当てとほぼ同じロジックで動作するが、集約したルートをコンフィグレベルで扱い、ルートインスタンスやルート名を個別に割り当てることはない。
その分、ルートを検索するための手法を複数用意して、集約したルートを扱いやすくしてみた。
詳しくは、
http://code.google.com/p/zflower/wiki/Flower_Controller_Router_Route_Statics
ここで。

Route_Route version2とはどんなものか

現状、Zend_Controller_Router_Route_AbstractはgetVersionで2を返す。Zend_Controller_Router_RewriteはgetVersionを見て1ならパスをそれ以外ならリクエストオブジェクトを渡す。
おそらく、パスを貰う代わりにリクエストを渡すことで、GETやCOOKIEなどによるルーティングも可能にできるということかと思う。実際、proposalにはそんな感じのrouteが上がってるので、いずれ出てくるのかもしれない。
本家の議論としては
http://framework.zend.com/issues/browse/ZF-777
こんな感じで進行して、1.7で投入されたということでいいだろうか。

matchの第2引数の$partial

Router_Route_Chainには$partialという第2引数が設定されていて、trueかfalseで動作を分けるようになっている。
テストケースを見ると、$partial = trueの時は、matchで返す配列に変化がある様子。matchのリターンに部分一致パスを渡すのか、それとも、全一致しなくても値を設定するということなのか、そこはよくわからない。
この部分、オレオレの中では、$partialを参照にして部分一致パスをセットしている。$requestを渡す仕様にすればその必要はないと思うので、$requestを拡張して$request内にルーティング用パスを保存しておいてもいいかもしれない。
一通り実装した後だが、変更するなら早い方がいいな。うん。