现在,我正在使用的代码库在构造函数中做了这样的事情:
$constants = array('CONSTANT1' => 1, 'CONSTANT2' => 2);
foreach ($constants as $name=>$val) {
if (!defined($name) {
define($name, $val);
}
}
我想用PHP5 const来做这件事。即。因此,代替执行if ($var == CONSTANT1)
的代码,我可以if ($var == self::CONSTANT1)
。
知道我怎么做这个吗?
答案 0 :(得分:1)
我想用PHP5 const来做这件事。
据我所知,如果没有runkit扩展,则无法在运行时在PHP中添加class constants。
使用runkit扩展程序,您可以使用define
:runkit_constant_add
。
runkit_constant_add(sprintf('%s::%s', get_class($this), $name), $val);
由于runkit扩展非常内部,这是一个强烈的迹象,表明您的设计存在问题。
如果你可以使用变量,你可以考虑选择静态全局类变量。
因此,您已明确要求:是,安装(并帮助维护)runkit extension。