只需要在Controller插件中的application.ini(main ini)中找到一些val 我知道我可以创建一个Zend_config_Ini实例,但想使用现有资源(application.ini已经在前端控制器中使用)
答案 0 :(得分:2)
// when loading the config
Zend_Registry::set('config', $config);
// later, somewhere
$config = Zend_Registry::get('config');
答案 1 :(得分:1)
尝试:
Zend_Controller_Front::getInstance()->getParam('bootstrap')->getOptions();
答案 2 :(得分:0)
如果您现在在整个应用程序的几个地方需要application.ini
的配置值,您可以在bootstrap中读取它并将其存储在注册表中:
$appConfig = new Zend_Config_Ini('path/to/application.ini');
Zend_Registry::set('applicationConfig', $appConfig);
然后您可以随时访问它:
Zend_Registry::get('applicationConfig')->someValue;
答案 3 :(得分:0)
出于可测试性和解耦的原因,我不会使用Zend_Registry
方法。在我看来,插件不应该知道Zend_Config
的任何内容,而是应该从外部注入插件中所需的所有选项。
例如,如果要在插件MyOption
中使用配置选项“Controller_Plugin_MyPlugin
”,则可以在Bootstrap
类中注入所需的参数,如下所示:
public function run()
{
$sopPlugin = $this->getResource('frontcontroller')->getPlugin('Controller_Plugin_MyPlugin');
$sopPlugin->setMyOption($this->getOption('MyOption'));
parent::run();
}
优点是,使用此解决方案可以避免在插件代码中依赖于Zend_Registry
(实际上这只是对全局变量的委婉说法)。