2011-03-07 160 views

回答

1

它不是優雅的。您應該在構造函數中傳遞該var,並將其保存到類中,以便在每個函數中使用private $var,並使用簡單的$this->var

$myUnicorn = "Pink"; 
class Unicorn { 
    private $currentUnicorn; 

    public function __construct($current) { 
     $this->currentUnicorn = $current; 
    } 

    public function echoIt() { 
     echo $this->currentUnicorn; 
    } 

    public function killIt() { 
     unset($this->currentUnicorn); // :(
    } 
} 

$u = new Unicorn($myUnicorn); 
$u->killIt(); 
3

在我看來,它是。您可以隨時使用構造函數將您的全局變量「發佈」爲您的方法,並在字段中保留鏈接。

2

在我看來,是的,它不是一個像你一樣使用的好習慣。你可以使用這個作爲

class test{ 
    private $myVar; 
    function __construct($myVar) 
    { 
    $this->myVar = $myVar; 
    } 
    function a(){ 
    echo $this->myvar; 
    .. 
    } 
} 




class test{ 
     private $myVar; 
     function __construct() 
     { 
     global $myVar; 
     $this->myVar = $myVar; 
     } 
     function a(){ 
     echo $this->myvar; 
     .. 
     } 
    } 
+0

這就是我的意思,謝謝你的例子。 – 2011-03-07 12:04:33

0

你不應該這樣做,除非你肯定要這樣做。如果有更好的方法可以做到這一點,那就使用它。例如,有些人使用它來訪問配置變量,但更好的方法是使用define()語句或靜態類和文件。

TL; DR - 只有在必須的情況下才可以。否則,不要。

0

海事組織是非常糟糕的。你讓你的課程依賴於一個外部變量。在這個變量不存在的上下文中實例化的對象將不起作用。

將變量傳遞給類的構造函數。這樣,只有提供參數時才能實例化對象。