2010-02-08 55 views
3

我試圖提供一個成員變量作爲類方法的默認值。作爲T_VARIABLE的PHP默認函數參數?

我知道使用變量作爲非類函數的默認值是不可能的,但似乎應該有一種方法可以在類中執行此操作。

必須有辦法做到這一點 - 也許我只是有錯誤的語法:

class test{ 
    private $test = ''; 

    __construct(){ 
    $this->test = "whatever"; 
    } 

    function getTest($var = $this->test){ 
    echo $var; 
    } 
} 

但是,這將引發一個錯誤,說是這樣的:

$這個 - >測試作爲函數參數的默認值是不允許的。意外的T_VARIABLE。

有什麼想法?

回答

10

manual: -

缺省值必須是常量 表達,而不是(例如) 變量,類部件或呼叫功能 。

我可能只是這樣做: -

<?php 

class Test { 

    public function __construct() { 

     $this->test = "whatever"; 

    } 

    public function getTest($var=NULL) { 

     if (is_null($var)) { 
      $var = $this->test; 
     } 

     echo $var; 
    } 
} 
?> 
3

我相信你只能在該語法中使用常量(字符串,數字等)(但我可能錯了)。

我建議此替代:

function getTest($var = null) { 
    if (is_null($var)) { 
     $var = $this->test; 
    } 
}