2012-07-30 55 views
3

constant()的手动条目表示如果未定义常量,函数应返回NULL。但是,对于下面的代码,它会给出一个致命的错误。PHP使用常量()时发生致命错误

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

如果$ name是有效的,事情工作正常。但是,如果它不是,我得到一个致命的错误“未定义的类常量...”手动说它应该引发一个E_WARNING错误,但我没有看到这在日志文件中。

+0

'$ constant'是一个变量,而不是一个常数。 – bfavaretto 2012-07-30 21:42:14

+0

@bfavaretto:对,对吗? – zerkms 2012-07-30 21:42:42

+0

@bfavaretto:那么? [阅读](http://php.net/constant) – 2012-07-30 21:42:56

回答

1

您的PHP设置可能会被设置为将所有错误视为致命错误。如果是这样的情况下,检查,看看是否你试图找回这将是一个修复之前就存在常数:

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

不,它可能是一个版本依赖的行为 – zerkms 2012-07-30 21:50:38

0

只要确保常数defined,然后再抛出,而不是一个异常(或继续无论你在追求什么流程)。

相关问题