2016-07-24 64 views
2

處理FALSE從函數返回到調用另一個函數的「最佳」方式是什麼?例如,我有「$ stmt-> execute();」來自PDO並想知道查詢執行何時失敗。處理函數的虛假返回。 IF vs OR與三元運算符等

演示:

function test() { 
    return false; 
} 

function error($err) { 
    echo $err; 
} 

if (!test()) error('a'); // method 1 
test() OR error('b'); // method 2 
test() || error('c'); // method 3 
test() ?: error('d'); // method 4 

這將顯示 「ABCD」。如果我將test()返回爲true,那麼所有4種方法都不起作用。但什麼是「最好的」?如果所有方法在編程方式上都是「正確的」,那麼什麼是更常用,更好,更現代,對於像PSR這樣的編碼標準更準確?也許還有更好的方法?

+1

第一種方法最直觀,最後一種方法最少。 – hjpotter92

回答

1

在這個非常簡單的例子中,我認爲這確實是一個選擇問題。因爲如果測試失敗,只有一條語句可以執行,並且如果通過則不需要做任何事情,所有內容都很容易適用於一行。除最後一行之外的任何內容都很容易閱讀,可能還不錯。

在大多數情況下,true/false測試的結果將導致不止一個語句。這個二進制分支是if-else構造的全部目的,所以我傾向於使用它。

if(test()){ 
    statement1(); 
    statement2(); 
    ... 
}else{ 
    statement3(); 
    statement4(); 
    ... 
}