Zend,Application.ini中的全局变量?

时间:2011-02-13 18:51:21

标签: zend-framework global-variables

我有一个问题,因为我需要一个全局静态变量,我有疑问是否有可能将它添加到application.ini文件中,该怎么做?

或者我必须:

  1. 使用静态变量
  2. 创建抽象类
  3. 在Zend_Registry中注册它以从所有应用程序访问此变量(在Bootstrap文件中注册)
  4. 我可以使用它,或者更容易,我的意思是“自动方式”来做它?
  5. 感谢您的建议! Regars,

6 个答案:

答案 0 :(得分:12)

Application.ini文件中的

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和常量,原因有两个

  1. 在注册表中,您永远无法确定变量发生了什么。应用程序的每个部分都可以更改它们,您不会被注意到。我认为注册表实际上是一种模式。
  2. 常量不必要地污染您的应用程序。如果你为每个配置使用一些常量怎么办?你必须保留一个定义了所有常量的附加文档,这很难维护。
  3. 最好的选择是直接从引导程序获取配置对象。在下面的示例中,我假设您在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