給出的嵌套,如果下面的語句:PHP如何評估複合if語句?
if(file_exists($fullPathToSomeFile)) {
if(is_readable($fullPathToSomeFile)) {
include($fullPathToSomeFile);
}
}
,這如何不同於:
if(file_exists($fullPathToSomeFile) && is_readable($fullPathToSomeFile)) {
include($fullPathToSomeFile);
}
具體來說,我想知道PHP會如何對待is_readable()如果$ fullPathToSomeFile不存在(第一有條件失敗)。
在某些時候,我開始嵌套這些因爲使用單線版本在某些條件下拋出錯誤。在我看來,使用任何'和'都會要求PHP評估所有內容,而不管真假結果如何。
我真正想要的是當它達到第一個false時停止評估,從而防止條件失敗時的警告或致命錯誤。做它嵌套(第一個例子)保證這一點,但嵌套如果語句難以閱讀和維護。
目前處理此問題的最佳做法是什麼?
就「include」語句而言,它們並沒有區別。兩個「if」陳述都必須是真實的。不同之處在於,如果你想讓邏輯依賴於現有的文件,但不一定是可讀的。如果'file_exists'失敗 - – Blake
- 沒有必要檢查'is_readable',因爲在這種情況下結果將__NEVER__爲真。 –
@u_mulder事實並非如此。該文件可能存在,但是可能會阻止其被讀取。 – Blake