使用没有返回值的return关键字?

时间:2014-09-04 12:55:04

标签: php

我在一些PHP设计模式中注意到,一些编写代码示例的作者在方法内返回,但没有指定返回值。  它只是说“返回”

有人可以解释一下这样做的目的是什么?以下是一个例子

谢谢!

function addListItem(ListItem $listItem){
    if(in_array($listItem, $this->listitems, true)){
        return;
    }
    $this->listitems[] = $listItem;

}

4 个答案:

答案 0 :(得分:1)

为副作用(IO,改变全局变量,或通过引用传递的参数,或对象属性,如示例中的$this->listitems[] = $listItem;)所做的,或指示它&#39不可能产生有效的结果。

return;

相当于

return null;

答案 1 :(得分:1)

return语句将在调用函数后立即停止该函数。因为我们不想像整数,字符串或布尔值那样返回任何值,所以我们只是停止它,这样代码就不会继续。

这也可以与breakfor循环中的while进行比较。

答案 2 :(得分:0)

对于初学者来说,你可能会遇到if语句,这使得方法中的其余代码变得不必要。

例如:

if(user->log_in == "")
{
    show_error_msg();
    return;
}

答案 3 :(得分:0)

技术上更正确"编写此类代码的方式是:

if( !in_array($listItem, $this->listitems, true)) {
    $this->listitems[] = $listItem;
}

但是,有时您可能会进行更复杂的测试,并且以这种方式进行操作可能会导致单个if块跨越多行,其中包含许多&&个或嵌套if语句从屏幕边缘掉下来。

因此,通常会看到代码的模式,即"检查故障条件并在必要时退出当前块"。这意味着你可以拥有你想要的尽可能少的条件,每个条件都有自己的失败条件,如果代码设法到达它的末尾那么你就可以了。

在某些情况下,错误处理很有用。类似的东西:

try {
    if( failure condition 1) throw new Exception("Error message 1");
    if( failure condition 2) throw new Exception("Error message 2");
    // ...
    do something here;
}
catch(Exception $e) {
    // report error here
}