可能重复:
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
。但是Bootstrap
或Zend_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。并且必须通过两个步骤从我的配置中获取参数。如何更有效地解决这个问题?
答案 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
希望有所帮助。