Zend_Application に Autoloderの設定を行う

( PHP )

昔のバージョンだとZendのソースを書き換えなくちゃいけなかったけど1.10からは自分でZend_Application利用してカスタマイズできるようになったみたいです。

まずはPHP.iniを以下のように設定します。 設定項目としては、どのクラスが宣言された場合はどのディレクトリを読み込みにいくかという設定です。

やりかたはいろいろあると思いますが、とりあえずこんな感じでいいかなレベルです。

;--------------------
; loader
;--------------------
; resources.autoloader.lists.(設定名) = "(どのクラス),(読み込み先)"
resources.autoloader.lists.validate = "Validate,models/Validate"
resources.autoloader.lists.dbtable = "Model_DbTable,models/DbTable"
resources.autoloader.lists.mappers = "Model_Mapper,models/mappers"

リソースのプログラムは以下のように実装します。


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

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

        $moduleLoader = new Zend_Application_Module_Autoloader(array(
            'basePath' => APPLICATION_PATH,
            'namespace' => '',
        ));

        foreach ($options['lists'] as $key => $resource ) {
            $data = explode(',', $resource);
            $moduleLoader->addResourceType($key, $data[1], $data[0]);
        }

        return ;
    }
}

これでいけるはず!!!

■参考URL http://d.hatena.ne.jp/sasezaki/20090415/p1

15/p1