我创建了一个基本的zend framwework项目,并在那里添加了几个额外的模块。 在每个模块上,我决定为它制作单独的配置文件。我在网上关注了一些资源,正如它所建议的那样,我将以下代码放在它的bootstrap类(而不是应用程序引导类)上
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
答案 0 :(得分: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;
}
}
当模块被引导时,它将自动运行。
答案 1 :(得分: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);
}