在 PHP 中,如果我写类似的东西
If ($this->that()){ return $this->that()}
它会执行$this->that()
两次吗?或者该解析器是否弄清楚并将其减少到 1 个调用?
如果可能,尽量保持代码干净,但不想为了一个变量分配而将执行时间加倍。
在 PHP 中,如果我写类似的东西
If ($this->that()){ return $this->that()}
它会执行$this->that()
两次吗?或者该解析器是否弄清楚并将其减少到 1 个调用?
如果可能,尽量保持代码干净,但不想为了一个变量分配而将执行时间加倍。
是的,它执行了两次。
为了让它执行一次,你应该将它的值保存到一个变量中并返回该变量:
if ($value = $this->that()) {
return $value;
}
如果你调用该函数两次,它会评估两次。
它肯定会执行两次。
也许您正在寻找function_exists?我不确定您的if
语句是否旨在确定该函数是否存在或不返回 false。