constant()的手動條目表示如果未定義常量,函數應返回NULL。但是,對於下面的代碼,它會給出一個致命的錯誤。PHP使用常量()時發生致命錯誤
$constant = get_class($this) . '::' . $name;
$value = constant($constant);
如果$ name是有效的,事情工作正常。但是,如果它不是,我得到一個致命的錯誤「未定義的類常量...」手動說它應該引發一個E_WARNING錯誤,但我沒有看到這在日誌文件中。
constant()的手動條目表示如果未定義常量,函數應返回NULL。但是,對於下面的代碼,它會給出一個致命的錯誤。PHP使用常量()時發生致命錯誤
$constant = get_class($this) . '::' . $name;
$value = constant($constant);
如果$ name是有效的,事情工作正常。但是,如果它不是,我得到一個致命的錯誤「未定義的類常量...」手動說它應該引發一個E_WARNING錯誤,但我沒有看到這在日誌文件中。
您的PHP設置可能會被設置爲將所有錯誤視爲致命錯誤。如果是這樣的情況下,檢查,看看是否你試圖找回這將是一個修復之前就存在常數:
$constant = get_class($this) . '::' . $name;
$value = defined($constant) ? constant($constant) : null;
不,它可能是一個版本依賴的行爲 – zerkms 2012-07-30 21:50:38
只要確保常數defined,然後再拋出,而不是一個異常(或繼續無論你在追求什麼流程)。
'$ constant'是一個變量,而不是一個常數。 – bfavaretto 2012-07-30 21:42:14
@bfavaretto:對,對嗎? – zerkms 2012-07-30 21:42:42
@bfavaretto:那麼? [閱讀](http://php.net/constant) – 2012-07-30 21:42:56