使用constant()时出现PHP致命错误

时间:2012-07-30 21:39:56

标签: php constants

constant()的手动输入表示如果未定义常量,则该函数应返回NULL。但是,对于下面的代码,它会产生致命的错误。

$constant = get_class($this) . '::' . $name;
$value = constant($constant);

如果$ name有效,一切正常。但是,如果不是,我会收到一个致命的错误“Undefined class constant ...”手册说它应该引发一个E_WARNING错误,但是我没有在日志文件中看到这个错误。

2 个答案:

答案 0 :(得分:1)

您的PHP设置可以设置为将所有错误视为致命错误。如果是这种情况,在尝试检索常量之前检查是否存在常量将是一个修复:

$constant = get_class($this) . '::' . $name;
$value = defined($constant) ? constant($constant) : null;

答案 1 :(得分:0)

首先确保常量为defined,然后抛出异常(或继续处理您正在关注的任何流程)。