如果我有一个if
语句依赖于返回false的两个方法之一,那么如果第一个方法返回false,两个方法都会运行。例如:
class myClass {
public function functPublic()
{
if(!$this->funct1() || !$this->funct2()){
print('test');
}
}
private function funct1()
{
// complex code here
return false;
}
private function funct2()
{
// complex code here
return false;
}
}
上述代码是否会执行funct2()
方法,即使它已从false
方法收到funct1()
?
答案 0 :(得分:3)
如果第一个条件被评估为真,则不会调用第二个条件。 测试php之类的简单方法是使用phpfiddle.org 或者自己创建一个php脚本,或者运行命令行。
答案 1 :(得分:1)
PHP使用Gradle User Guide。
在所有这些情况下,永远不会调用foo()
。
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());
所以用
function funct1() {
return false;
}
从而
if (!$this->funct1() || !$this->funct2())
是
if (!false || !$this->funct2())
是
if (true || !$this->funct2())
表示永远不会调用$this->funct2()
。
答案 2 :(得分:0)
答案 3 :(得分:0)
使用OR,执行第一次检查。如果计算结果为true,则不运行第二个。只有当第一个评估为false时才会调用第二个。 如果您需要两者都运行,请使用AND。