0

基本的な zend フレームワーク プロジェクトを作成し、そこにいくつかのモジュールを追加しました。各モジュールで、個別の構成ファイルを作成することにしました。私はネット上のいくつかのリソースをたどり、それが示唆するように、次のコードをそのブートストラップ クラス (アプリケーションのブートストラップ クラスではない) に配置しました。

class Custom_Bootstrap extends Zend_Application_Module_Bootstrap {

    protected function _bootstrap()
    {
        $_conf = new Zend_Config_Ini(APPLICATION_PATH . "/modules/" . $this->getModuleName() . "/configs/application.ini", APPLICATION_ENV);
        $this->_options = array_merge($this->_options, $_conf->toArray());
        parent::_bootstrap();  
    }   
}

機能していなくても、エラーが発生します。

Strict Standards: Declaration of Custom_Bootstrap::_bootstrap() should be compatible with that of Zend_Application_Bootstrap_BootstrapAbstract::_bootstrap() in xxx\application\modules\custom\Bootstrap.php on line 2
4

2 に答える 2

2

ブートストラップ メソッドをオーバーライドしないでください。モジュール構成をリソースにするだけです。

class Custom_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function _initConfig()
    {
        $config = new Zend_Config_Ini(APPLICATION_PATH . "/modules/" . $this->getModuleName() . "/configs/application.ini", APPLICATION_ENV);
        $this->_options = array_merge($this->_options, $config->toArray());

        return $this->_options;
    }   
}

これは、モジュールがブートストラップされるときに自動的に実行されます。

于 2011-08-04T08:11:26.840 に答える
0

のソース コードを見るとZend_Application_Bootstrap_BootstrapAbstract、 の宣言は_bootstrap次のようになります。

    protected function _bootstrap($resource = null)
    {
        ...
    }

したがって、オーバーライドを次のように変更するだけです。

    protected function _bootstrap($resource = null)
    {
        $_conf = new Zend_Config_Ini(APPLICATION_PATH . "/modules/" . $this->getModuleName() . "/configs/application.ini", APPLICATION_ENV);
        $this->_options = array_merge($this->_options, $_conf->toArray());
        parent::_bootstrap($resource);  
    }
于 2011-08-04T08:00:49.100 に答える