【问题标题】:Where to store application constants in Zend?Zend 中的应用程序常量存储在哪里?
【发布时间】:2010-12-21 14:20:03
【问题描述】:

我需要为我的应用程序定义一些常量,例如,SITE_KEY 将包含盐密码的随机密钥。

不过,我不确定我应该在哪里定义这些。我想把它们放在 public/index.php 中,但这似乎有点乱。根据 Zend 什么的,他们应该去一个特定的地方吗?

谢谢

编辑

我正在尝试这样做: 在我的application.ini 我有这个:

siteglobal.sitekey = "test"

在我的bootstrap.php 文件中:

protected function _initGlobals()
{
$config = $this->getOptions();
define('SITE_KEY', $config['siteglobal']['sitekey']);

}

当我尝试像这样在控制器中回显 SITE_KEY 时,这仍然不起作用:

echo SITE_KEY;

它没有显示任何东西。有什么想法吗?

【问题讨论】:

    标签: php zend-framework constants


    【解决方案1】:

    在我的应用程序中,我结合了 Haim 和 Yeroon 的方法。我将应用程序常量存储在我的application.ini 中,然后在Bootstrap 中解析它们并将它们放入Zend_Registry

    所以,在application.ini

    constants.site_key = my_site_key
    

    Bootstrap

    protected function _initConstants()
    {
        $registry = Zend_Registry::getInstance();
        $registry->constants = new Zend_Config( $this->getApplication()->getOption('constants') );
    }
    

    然后我可以从应用程序中的任何位置(模型、控制器等)访问这些常量

    Zend_Registry::getInstance()->constants->site_key
    

    【讨论】:

    • 谢谢你,我试图用 define 来达到同样的效果,但没有成功。
    【解决方案2】:

    你试过Zend_Registry吗?它用于存储应用程序范围的值、对象等。

    商店:

    Zend_Registry::set('index', $value);
    

    检索:

    $value = Zend_Registry::get('index');
    

    【讨论】:

    • 不,我没有,谢谢提及。我会将它们存储在哪个文件中?这是我的问题,因为我也可以简单地使用 define() 但我真的不知道在哪里放置这些常量。
    【解决方案3】:

    application/configs/application.ini

    myvar = myvalue
    

    得到他们喜欢后:

    $myvar = $application->getOption('myvar');
    

    read more ....

    【讨论】:

    • 如果你在函数中使用全局 $application;
    • 在public/index.php你设置了这个参数,看我写的链接
    • 我不能在 index.php 中使用 $this,因为我不在一个对象中?
    • 这似乎可行,但我如何从我的控制器调用 $var 呢?感谢您的帮助!
    • @Haim 使用global?!你真的不能认真
    猜你喜欢
    • 2013-02-10
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多