写If(Function){return function}执行该函数两次吗?

时间:2012-11-09 18:03:27

标签: php

如果我写的是

,那么在Php中
If ($this->that()){ return $this->that()}

它执行$this->that()两次吗?或者该解析器是否将其解决并将其减少为1次调用?

尽可能保持代码清洁,但为了一个变量赋值,不希望将执行时间加倍。

3 个答案:

答案 0 :(得分:9)

是的,它会执行两次。

要使其执行一次,您应将其值保存到变量中并返回变量:

if ($value = $this->that()) {
    return $value;
}

答案 1 :(得分:1)

如果你两次调用该函数,它将进行两次评估。

答案 2 :(得分:1)

肯定会执行两次。

也许您正在寻找function_exists?我不确定您的if语句是否旨在确定函数是否存在或不返回false。