2014-10-17 100 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; 
相關問題