2014-10-17 53 views
0

我想知道是否有方法在PHP中知道一个正在调用的函数是否会将某些内容返回给变量(或不)。有没有办法知道函数是否返回到PHP中的变量?

例如,有没有办法知道什么时候发生这种情况:

  1. $foo = bar(); //是的,它会返回一个变量
  2. bar(); //没有,也不会恢复到一个变量

这将会是最好的,如果有知道的吧()函数中的一种方式。如果没有这样的存在 - 是否有可能实现?

我目前没有需要做到这一点,但一个简单的使用情况是:

class Model() { 
    private $foo = 0; 

    function bar() { 
     $foo += 100; 

     if(returnsToVariable) // <==== 
      return $foo; 
    } 
} 

因此,它可以被用来获得的$ foo的立即值(和是的,我知道我可以/ haveto使用setter,这只是一个说明性的例子)。

在此先感谢。

+0

我不明白这对于什么有用。无论您的示例中的“bar”方法是否返回任何内容,都不会影响该方法内部的其他内容。不,没有简单的方法来确定这一点。函数/方法不会“返回到变量”,只是在不知道周围脚本的任何内容的情况下被调用。然而你可以传递一个参数来告诉函数是否应该返回一些东西。 – CBroe 2014-10-17 11:25:23

+0

功能不应该担心外面会发生什么。如果它没有被钉死或在任何地方没有被使用过,那么你总能返回价值。 – Gustek 2014-10-17 11:25:42

+0

用例无效。从字面上来说,从来没有一个用例用于你所提到的。正如其他人所说,函数并不关心它是否“返回到变量”。函数完成它的工作并返回,这是可选的。就这样。作为一名渴望的开发人员,您可以做的是在函数调用周围创建一个包装,并确保结果始终存储在一个变量中。 – 2014-10-17 11:33:13

回答

2

只需要使用适当的方式这个功能。当您将returnToVariable设置为常数时,比预期要返回的东西要多,否则没有返回值,并且您的$foo = bar()将是NULL

class Model() { 
    private $foo = 0; 

    function bar($return = false) { 
     $this->foo += 100; 

     if($return) 
      return $this->foo; 
    } 
} 


$model = new Model(); 
$model->bar(); //$model->foo == 100 
$foo = $model->bar(true); //$model->foo == $foo == 200 
$foo = $model->bar(); //$model->foo == 200; $foo == null; 
$model->bar(true); //$model->foo == 300; $foo == null; 
相关问题