2012-07-30 66 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,然後再拋出,而不是一個異常(或繼續無論你在追求什麼流程)。

相關問題