即興でZendFrameworkでルーターをプラグイン化

( diary )

最近になってDIコンテナの意味を体で感じ始めてきた今日この頃。僕です。

今日はzendframeworkのRouerという機能をbootstrapに入れてみます。

まずRouer用のリソースを作成

/*
 * My_Application_Resource_Router
 */
class My_Application_Resource_Router extends Zend_Application_Resource_ResourceAbstract
{
 
    public function init()
    {
        // init
        $router = null;

        // オプション情報取得
        $options = $this->getOptions();

        // ルータを利用する
        if ( $options['use'] == true ) {
            // フロントコントローラ取得
            $front = Zend_Controller_Front::getInstance();

            // ルータ情報を保存する。
            $routes = new Zend_Config_Ini( $options['filepath'] , $options['section'] );
            $router = $front->getRouter();
            $router->addConfig($routes, $options['section']);
        }

        return $router;
    }
}

その後にapplication.iniに設定のファイルを読み込ませます。

resouorce.router.use = true
resouorce.router.filepath = "path/to/"
resouorce.router.section = "router"

一応、これでindex.phpでやってたことをapplication.iniで行えるようにできました。とさ。

さ。