在哪里使用Zend框架定义常量



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

否则我如何在框架内设置这些?问题是常量需要在类之外声明。(我不想要类常量)。

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

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

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

值得一提的是,您可以在application.ini文件中定义"real"常量。示例:

//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);
        }
    }
}

创建一个自定义库并在其中定义所有常量。这将对您有益,因为库每次调用控制器时都会调用它。

您必须在引导程序和ini文件中定义自定义库。

这将是一个很好的实践,因为你可以在一个地方找到每一个常量,并且你可以随时轻松地进行更改。

最新更新