我在一些PHP设计模式中注意到,一些编写代码示例的作者在方法内返回,但没有指定返回值。 它只是说“返回”
有人可以解释一下这样做的目的是什么?以下是一个例子
谢谢!
function addListItem(ListItem $listItem){
if(in_array($listItem, $this->listitems, true)){
return;
}
$this->listitems[] = $listItem;
}
答案 0 :(得分:1)
为副作用(IO,改变全局变量,或通过引用传递的参数,或对象属性,如示例中的$this->listitems[] = $listItem;
)所做的,或指示它&#39不可能产生有效的结果。
return;
相当于
return null;
答案 1 :(得分:1)
return
语句将在调用函数后立即停止该函数。因为我们不想像整数,字符串或布尔值那样返回任何值,所以我们只是停止它,这样代码就不会继续。
这也可以与break
或for
循环中的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
}