类方法在if()内执行两次

时间:2017-03-08 17:29:33

标签: php

if ( $this->guardian() ) { return $this->guardian(); }<--will this execute method twice?

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

我有一个问题,如果我在if和return方法中放置类方法,这会执行两次方法吗? (它很干净,但我不想执行两次)

2 个答案:

答案 0 :(得分:3)

第一个选项将执行该方法两次,因为您正在调用它2次。

但是第二个选项会将方法的结果存储在var $guardian中。 你的第二种方式是正确的方法,因为当一个函数X不需要它时不止一次,它不正确且效率低下,这将消耗更多的资源。

答案 1 :(得分:2)

是的,它会,除非它返回0,null,false等。你可以做

if ( $ret = $this->guardian() ) { return $ret; }