2011-03-07 110 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

海事组织是非常糟糕的。你让你的课程依赖于一个外部变量。在这个变量不存在的上下文中实例化的对象将不起作用。

将变量传递给类的构造函数。这样,只有提供参数时才能实例化对象。