我想在 Zend Framework 中使用一些真正的常量。我知道我可以在 index.php 中设置它们,但这在运行 PHPUnit 测试时不会执行。(无论如何,在这种情况下不是)。
我还能如何在框架内设置这些?问题是常量需要在类外声明。(我不想要类常量)。
如果一切都失败了,我可以在我的单元测试引导程序中设置它们,但如果可能的话,我想避免重复。
我想在 Zend Framework 中使用一些真正的常量。我知道我可以在 index.php 中设置它们,但这在运行 PHPUnit 测试时不会执行。(无论如何,在这种情况下不是)。
我还能如何在框架内设置这些?问题是常量需要在类外声明。(我不想要类常量)。
如果一切都失败了,我可以在我的单元测试引导程序中设置它们,但如果可能的话,我想避免重复。
我总是在引导文件中定义它们。但我确实使用 Zend_Registry 而不是常量。
Zend_Registry::set('property1', 'value1');
//everywhere in your code
$value = Zend_Registry::get('property1');
值得一提的是,您可以在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);
}
}
}
创建一个自定义库并在那里定义所有常量。这将对您有益,因为每次调用控制器时都会调用库。
您必须需要在 bootstrap 和 ini 文件中定义自定义库。
这将是一个很好的做法,因为您可以在一个地方找到每个常量,并且您可以随时轻松地进行更改。