如何在会话期间从Zend应用程序.ini文件中检索参数?



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

application.ini是采埃孚中的配置文件。我有更多的设置,而不仅仅是采埃孚手册写的那些默认值。但是,例如,如何从操作控制器中检索这些参数?在会话期间在哪里存储此配置更好?

Bootstrap_Abstract类具有getOptions()方法,该方法返回读取application.ini文件的简单 php 数组:

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

我想让元素形成它的 oop 样式:

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

ZF 有Zend_Config_Ini类读取.ini的并准确返回 ArrayObject。但我想避免在Zend_Application已经读过application.ini之后再读一次Zend_Config_Ini。但是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

但这似乎有点低效:我在Bootstrap中以通常的 php 数组的形式有一个application.ini的副本,还有一个相同application.ini的副本,但在Zend_Registry中也以 ArrayObject 的形式存在。并且必须执行两个步骤才能从我的配置中获取参数。如何更有效地解决这个问题?

使用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

希望有帮助。

相关内容

  • 没有找到相关文章

最新更新