Проблема с настройкой конкретного файла конфигурации модуля - PullRequest
0 голосов
/ 04 августа 2011

Я создаю базовые проекты Zend Framwework и добавляю туда пару дополнительных модулей.На каждом модуле я решил создать отдельные файлы конфигурации для него.Я проследил за некоторыми ресурсами в сети и, как он подсказывает, поместил следующий код в его класс начальной загрузки (не в класс начальной загрузки приложений)

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

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

Не переопределяйте метод начальной загрузки, просто сделайте конфигурацию вашего модуля ресурсом:

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;
    }   
}

это будет выполнено автоматически при загрузке модуля.

0 голосов
/ 04 августа 2011

Глядя на исходный код 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);  
    }
...