处理函数的错误返回.IF与OR与三元运算符等


Handle false return from function. IF vs OR vs Ternary operators etc

处理函数返回FALSE并调用另一个函数的"最佳"方法是什么?例如,我有来自PDO的"$stmt->execute();",想知道查询执行何时失败。

演示:

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这样的编码标准,什么更常用、更好、更现代、也许更正确?也许还有其他更好的方法?

在这个非常简单的例子中,我认为这实际上是一个选择的问题。因为如果测试失败,您只需要执行一条语句,而如果通过,则无需执行任何语句,所以一切都很容易放在一行中。除了最后一行以外的任何内容都很容易阅读,而且可能很好。

然而,在大多数情况下,true/false测试的结果将导致不止一条语句。这个二进制分支就是if-else构造的全部目的,所以我倾向于使用它。

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