处理函数的错误返回。 IF vs OR与三元运营商等

时间:2016-07-24 01:56:44

标签: php pdo

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

演示:

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 个答案:

答案 0 :(得分:1)

在这个非常简单的例子中,我认为这确实是一个选择问题。因为如果测试失败只有一个语句要执行,如果它通过则无需执行任何操作,一切都很容易适用于一行。除了最后一行之外的任何东西都很容易阅读,可能还不错。

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

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