是否有更好的方法从Zend Framework中的Controller插件访问配置

时间:2010-03-11 11:03:59

标签: php zend-framework

只需要在Controller插件中的application.ini(main ini)中找到一些val 我知道我可以创建一个Zend_config_Ini实例,但想使用现有资源(application.ini已经在前端控制器中使用)

4 个答案:

答案 0 :(得分:2)

使用Zend Registry

// 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(实际上这只是对全局变量的委婉说法)。