2011-08-15 53 views
0

我剛開始使用類構造函數。在下面的腳本中,我想從類之外傳入$ arg2值。在類構造函數之外分配變量以便在類中使用?

我該如何定義一個變量$ someVariable = n,以便它可以從包含以下文件的父文件的類構造函數外部進行設置?

class myClassTest 
{  
    public $var1; 
    public $var2; 
    public $var3; 

    function __construct($arg1,$arg2=$someVariable){ //MAKE $arg2 dynamically set from outside the class 
     $this->var1 = $arg1; 
     $this->var2 = $arg2; 
     $this->var3 = array(); 
    } 
+0

,目前還不清楚是否要爲其賦值'$ arg2',然後通過在構造函數中,或者如果你'實際上是試圖爲'$ var2'指定一個值 –

+0

我想在父級腳本中設置$ someVar = 10。然後,在類構造函數中我想定義$ arg2 = $ someVar – RegEdit

+1

啊,所以你試圖在類之外設置'$ arg2'的默認值?你可以做到,但它似乎違反直覺;爲什麼不直接傳遞你的價值而不是將它作爲默認值來使用呢? –

回答

1

就這樣使用它,但它不建議

$someGlobalVar = "test"; 
class myClassTest 
{  
    public $var1; 
    public $var2; 
    public $var3; 

    function __construct($arg1,$arg2=null){ 
     if ($arg2 === null){ 
      global $someGlobalVar; 
      $arg2 = $someGlobalVar; 
     } 
     echo $arg2; 
     $this->var1 = $arg1; 
     $this->var2 = $arg2; 
     $this->var3 = array(); 
    } 
} 
$class = new myClassTest('something'); //outputs test 

working demo

+0

+1,並感謝您的解釋。 – RegEdit

1

您不能使用某個'external'變量設置參數$ arg2的默認值。 默認值在函數的「定義時間」得到(邏輯)。因此,這些參數需要爲文字(常量)值。

因此,這些都很好聲明:

function makecoffee($type = "cappuccino") { } 
    function makecoffee($types = array("cappuccino"), $coffeeMaker = NULL) { }  

如果你想「注入」外部的東西,你需要做的是這樣的:

$someglobalVariable = 'whatever'; 

class myClassTest 
{  
    public $var1; 
    public $var2; 
    public $var3; 

    function __construct($arg1,$arg2=null){ //MAKE $numres dynamic from outside the class 

     global $someglobalVariable; 

     if (! isset($arg2)) { 
      $this->var2 = $someglobalVariable; 
     } else { 
      $this->var2 = $arg2; 
     } 
     $this->var1 = $arg1; 
     $this->var3 = array(); 
    } 

} // end of class 

請注意,這是壞風格訪問PHP中的全局變量(與其他任何面向對象的語言一樣)。

相關問題