2017-03-08 41 views
1
if ($this->guardian()) { return $this->guardian(); }<--will this execute method twice? 

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

我有一个问题,如果我放置类方法里面的if和return方法,这会执行两次方法吗? (它非常干净,但我不想执行两次)类方法执行两次内if()

+0

是的,它会保留。第二种方法是做 –

+0

正确的方式,但第一种方式看起来很不错,干净笑 –

+0

是的,它会调用该函数,我认为第二个变种会好 –

回答

2

是的,它会,除非它返回0,空,假的,等你可以做

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

这一个好看明了!多谢! –

3

第一个选项将执行方法两次,因为你叫它两次。

但第二个选项将方法的结果存储在var $guardian。 你的第二个方式是正确的做法,因为调用函数时,不需要的话这是不对的,效率低下X超过一次,这会消耗资源多很多。