如何在会话期间从Zend application.ini文件中检索参数?

时间:2012-10-15 00:26:00

标签: zend-framework configuration zend-config zend-app-bootstrap

  

可能重复:
  How could read application.ini on controller using zend framework

application.ini是ZF中的配置文件。我有一些设置,而不仅仅是ZF手册所写的那些默认设置。但是,如何从我的动作控制器中检索这些参数呢?在会话期间存储此配置的位置更好?

Bootstrap_Abstract类有getOptions()方法,它返回一个简单的php application.ini文件数组:

$app = new Zend_Application(APPLICATION_ENV, '/application.ini');
$config = $app->bootstrap()->getOptions();  // $config is a php array of application.ini

我希望从oop-style获得元素形式:

$param = $config[one][two];  // vs.
$param = $config->one->two;  // like this

ZF有Zend_Config_Ini类,它读取.ini并完全返回ArrayObject。但是,在application.ini已经阅读之后,我希望再次使用Zend_Config_Ini再次阅读Zend_Application。但是BootstrapZend_Application类不能从application.ini自动创建ArrayObject。

第二个,我可以在哪里存储这个$ config呢?在Zend_Registry

Zend_Registry::set('config', $config);

然后在我的一些动作控制器中检索它:

$config = Zend_Registry::get('config');  // I retrieve config
$param = $config->one->two;              // I retrieve parameter from it and use it

但它看起来有点效率低下:我在application.ini中有Bootstrap的一个副本,其形式为通常的php数组,另一个副本来自同一个application.ini,但形式为Zend_Registry中也有ArrayObject。并且必须通过两个步骤从我的配置中获取参数。如何更有效地解决这个问题?

1 个答案:

答案 0 :(得分:25)

使用Zend_Controller_Front,您可以使用以下代码从应用程序中的任何位置(控制器,插件,模型等)检索application.ini的信息:

$config = Zend_Controller_Front::getInstance()->getParam('bootstrap');

application.ini中说你有这样的选择:

apikeys.google.maps.id  = "abc"
apikeys.google.maps.key = "123456789"
apikeys.twitter.oauth   = "20jg9032jg9320gj30"

然后,您可以使用上述$config变量访问这些值:

$apikeys = $config->getOption('apikeys');
$mapsId  = $apikeys['google']['maps']['id'];  // abc
$maksKey = $apikeys['google']['maps']['key']; // 123456789
$twitKey = $apikeys['twitter']['oauth'];      // 20jg9032jg9320gj30

希望有所帮助。