使用define()在for循环中创建常量

时间:2015-03-29 02:20:38

标签: php constants

现在,我正在使用的代码库在构造函数中做了这样的事情:

$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)

知道我怎么做这个吗?

1 个答案:

答案 0 :(得分:1)

  

我想用PHP5 const来做这件事。

据我所知,如果没有runkit扩展,则无法在运行时在PHP中添加class constants

使用runkit扩展程序,您可以使用definerunkit_constant_add

runkit_constant_add(sprintf('%s::%s', get_class($this), $name), $val);

由于runkit扩展非常内部,这是一个强烈的迹象,表明您的设计存在问题。

如果你可以使用变量,你可以考虑选择静态全局类变量。

因此,您已明确要求:是,安装(并帮助维护)runkit extension