2010-03-19 44 views
0

我剛剛在GitHub上遇到了thisPHP簡寫語法

($config === NULL) and $config = Kohana::config('email'); 

是這樣的

if ($config === NULL) { 
    $config = Kohana::config('email'); 
} 

相當於這是司空見慣?如果我用第一種方法即時知道它在做什麼,我是否期望其他開發人員查看我的代碼?

回答

2

花了我一秒就明白了,但實際上它應該適用於所有的編程語言。因爲「and」或「or」運算符是懶惰評估的,所以如果左邊的語句是假的,那麼就不需要評估其餘的語句,因爲整個表達式總是假的(false和true是假的)。同樣,你可以用「或」來做,但是左邊的陳述必須是真實的,那麼不會被評估。

PS:在這種情況下,右邊的內容並不是真正的布爾表達式;它只會承擔$config的真值

+0

謝謝,這個解釋幫助我理解得最好。 – alex 2010-03-19 05:05:50

3

AND是一個PHP邏輯運算符。

($config === NULL) and $config = Kohana::config('email'); 

具有等效的結果(但具有較小的operator precedence)到

($config === NULL) && $config = Kohana::config('email'); 

就個人而言,爲避免混淆,我會用你的第二個方法。