constant()的手动输入表示如果未定义常量,则该函数应返回NULL。但是,对于下面的代码,它会产生致命的错误。
$constant = get_class($this) . '::' . $name;
$value = constant($constant);
如果$ name有效,一切正常。但是,如果不是,我会收到一个致命的错误“Undefined class constant ...”手册说它应该引发一个E_WARNING错误,但是我没有在日志文件中看到这个错误。
答案 0 :(得分:1)
您的PHP设置可以设置为将所有错误视为致命错误。如果是这种情况,在尝试检索常量之前检查是否存在常量将是一个修复:
$constant = get_class($this) . '::' . $name;
$value = defined($constant) ? constant($constant) : null;
答案 1 :(得分:0)
首先确保常量为defined,然后抛出异常(或继续处理您正在关注的任何流程)。