Zend_Controller2.0 PageControllerPattern
http://framework.zend.com/wiki/display/ZFDEV/Zend_Controller+2.0#Zend_Controller2.0-IntegratethePageControllerpattern
Zend_Controllerのロードマップにページコントローラーパターンがある。
# wikiが古いだけで、ページコントローラーパターンって完成なんだろうか・・・ドキュメント待ち?
Zend Frameworkはフロントコントローラーパターンを使っているが、システムが大規模になるとルーティングのロードだけで相当なコストになる。ACLも全体をロードすると重い。
そこで、ページ毎に処理すべき内容を限定できるページコントローラーパターンの出番となる。エントリーポイントを増やして、直接アクションコントローラーを呼ぶことにより、フロントコントローラーパターンのもつ複雑さを解消し、パフォーマンスの改善もできる。
RSS配信用やAjaxによるRESTなどはルーティングは非常にシンプルでよいので、そういった部分を切り分けるだけでも相互にメリットがありそう。
現状の実装ではページコントローラーにしたいエントリーポイントでActionController::run()を呼んで処理する。
<?php Zend_Loader::loadClass('SomeController', '/modules/default/controllers/'); $request = new Zend_Controller_Request_Http(); $request->setActionName('foo'); $ctrl = new SomeController($request, new Zend_Controller_Response_Http()); echo $ctrl->run();