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

Gre*_*een 10 configuration zend-framework zend-config zend-app-bootstrap

可能重复:
如何使用zend框架在控制器上读取application.ini

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
Run Code Online (Sandbox Code Playgroud)

而且我想从oop-style获得元素形式:

$param = $config[one][two];  // vs.
$param = $config->one->two;  // like this
Run Code Online (Sandbox Code Playgroud)

ZF有一个Zend_Config_Ini类,它读取.ini并返回ArrayObject.但我想避免读取application.iniZend_Config_Ini一个更多的时间后Zend_Application已反正已经阅读.但是,Bootstrap或者Zend_Application类没有提供一些自动创建ArrayObject application.ini.

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

Zend_Registry::set('config', $config);
Run Code Online (Sandbox Code Playgroud)

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

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

但它似乎有点低效率的:我有一个副本application.iniBootstrap的常用PHP数组的形式和相同的一个副本application.ini,但在自ArrayObject的形式Zend_Registry了.并且必须通过两个步骤从我的配置中获取参数.如何更有效地解决这个问题?

dre*_*010 25

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

$config = Zend_Controller_Front::getInstance()->getParam('bootstrap');
Run Code Online (Sandbox Code Playgroud)

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

apikeys.google.maps.id  = "abc"
apikeys.google.maps.key = "123456789"
apikeys.twitter.oauth   = "20jg9032jg9320gj30"
Run Code Online (Sandbox Code Playgroud)

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

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

希望有所帮助.