Zend Framework には Zend_Controller_Router_Route っていうのがあり、これで URL のパスの制御ができる。
例えば、 enjoitech.jp/help っていう URL を実装したい時に、 Zend の標準の設定では /help は helpController の indexAction に通じるわけだけど、これを Router でうまい事変更してやれる。
ここの例では staticController っていう static なコンテンツを全部管理するコントローラーを作っておいて、そこに helpAction っていうアクションをつくり、/help をそこに通じるようルーティングする方法を説明する。
まず、コードを追加する場所だけど、これは front controller を run する前がいいので index.php が妥当。別に別のファイルにして include しても構わないとは思う。
そして、実際に追加するコードは以下の通り
require_once("Zend/Controller/Front.php"); $front = Zend_Controller_Front::getInstance(); $router = $front->getRouter(); $router->addRoute( 'help', new Zend_Controller_Router_Route( 'help', array('controller' => 'static', 'action' => 'help') ) );
このコードは、まずフロントコントローラのインスタンスを取得して、そこから router オブジェクトを受け取って、そこに新しいルーティングを help という名前で追加してる。
実際のルーティングオブジェクトは Zend_Controller_ROuter_Route でこのコードでは help というパスへのアクセスが来たら、 staticController の helpAction を呼べ、という指定をしている。
この例はものすごい単純な例。実際はパラメータを渡したり、パラメータの書式条件を指定したり色々できる。
この辺りを一通り把握しておくと、アプリケーションをモジュール分けしたりする時もすんなり理解できると思う。
余談だけど、最近 zend は AMF も取り込んだし flash/flex との相性も良くなったみたい。