我有一个问题,因为我需要一个全局静态变量,我有疑问是否有可能将它添加到application.ini文件中,该怎么做?
或者我必须:
感谢您的建议! Regars,
答案 0 :(得分:12)
someservice.apikey = 12345678
someservice.passkey = 87654321
在bootstrap中
public function _initSomeservice()
{
$someservice = $this->getOption('someservice');
Zend_Registry::set('someservice', $someservice);
}
从注册表中提取
$config = Zend_Registry::get('someservice');
答案 1 :(得分:6)
对我来说最好的解决方案是在index.php文件中创建一个变量。我已经添加了: 定义( 'VARIABLE_NAME') || define('VARIABLE_NAME','Something here');
现在我可以从任何地方访问它; D 非常感谢!
答案 2 :(得分:5)
我不会使用Zend_Registry和常量,原因有两个
最好的选择是直接从引导程序获取配置对象。在下面的示例中,我假设您在application.ini中有这个:
someservice.apikey = 12345678
someservice.passkey = 87654321
bootstrap被设置为frontController中的参数。如果你有一个动作控制器,这就像这样简单:
$serviceOptions = $this->getInvokeArg('bootstrap')->getOption('someservice');
如果你在控制器中实例化了一个服务,你现在可以通过构造函数和/或setter传递它们。
如果你想获得不在你的控制器内的选项,而是在其他地方,你可以使用frontController实现的单例模式。所以在任何地方(当然只在调度期间,而不是在自举期间)你能够做到这一点:
$frontController = Zend_Controller_Front::getInstance();
$serviceOptions = $frontController->getParam('bootstrap')
->getOption('someservice');
使用上述方法,您可以安全地使用正确的配置选项,而不是一些可能已变异的选项。
答案 3 :(得分:1)
您可以在application.ini中指定值,并在Bootstrap.php中指定它并将其保存在Zend_Registry中。您还可以使用PHP define方法创建常量(如果您的变量是常量)。
答案 4 :(得分:0)
我刚刚添加了define('VARIABLE_NAME','Something here');引导。 即时全局常量。
这些常量被放置在bootstrap extends class内的受保护_intiFuncName函数内部
答案 5 :(得分:0)
我在application.ini中有一系列具有以下命名约定的常量:
system.image_path = "/assets/images"
system.custom_path = "/assets/custom"
system.cdn_URL = "http://cdnurl.com"
我只是在我的代码中引用它们,好像它们是PHP常量:
SYSTEM_IMAGE_PATH
SYSTEM_CUSTOM_PATH
SYSTEM_CDN_URL