使用Zend Framework定义常量的位置

时间:2013-07-11 07:31:34

标签: php zend-framework constants

我想在Zend Framework中使用一些真正的常量。我知道我可以在index.php中设置它们,但是在运行PHPUnit测试时不会执行它。 (无论如何,不​​是这种情况)。

我怎样才能在框架内设置这些?问题是常量需要在类外声明。 (我不想要类常量)。

如果所有其他方法都失败了,我可以在我的单元测试引导程序中设置它们,但是如果可能的话我想避免重复。

3 个答案:

答案 0 :(得分:5)

我总是在bootstrap文件中定义它们。但我确实使用Zend_Registry而不是常量。

Zend_Registry::set('property1', 'value1');

//everywhere in your code
$value = Zend_Registry::get('property1');

答案 1 :(得分:1)

值得一提的是,您可以在application.ini文件中定义“真实”常量。 例如:

//application.ini
[production]
constants.ONE = 'HELLO'
constants.TWO = 'WORLD'


//Bootstrap.php
public function setConstants($constants)
{
    // define() is notoriously slow
    if (function_exists('apc_define_constants')) {
        apc_define_constants('zf', $constants);
        return;
    }

    foreach ($constants as $name => $value) {
        if (false === defined($name)) {
            define($name, $value);
        }
    }
}

答案 2 :(得分:0)

创建一个自定义库并在那里定义所有常量。 这对你来说是有益的,因为每次你打电话给控制器时都会调用库。

您需要在bootstrap和ini文件中定义自定义库。

这是一个很好的做法,因为您可以在某个地方找到每个常数,并且您可以随时轻松地进行更改。