2016-07-24 65 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(); 
    ... 
}