2010-10-02 36 views
3

在類內部獲取全局變量的最佳方式是什麼?php - 所有類功能中的全局變量

我知道我可以很容易地使用「全局$ tmpVar;」在類函數中,但是有一種方法可以全局變量,因此它可以在類中的所有函數中使用,而不需要醜陋的全局$ tmpVar;每個功能裏面?

理想情況下,「類tmpClass(){」聲明將很好,但不知道這是否可能。

+1

相關:http://stackoverflow.com/questions/1812472/in-a-php-project-how-do-you-organize-and-access-your -helper-objects – 2010-10-02 09:25:36

+0

你可以在你正在做的事情上添加一些細節嗎?因爲全球變量往往不是最好/最乾淨的方式;替代建議可能會出現 – 2010-10-02 09:26:33

+2

這並不理想,那太可怕了。最好的方法(95%的時間)根本不使用全局變量。很高興你必須使用「醜陋」的'全局$ var;',這會讓代碼很快理解WTF的過程變得容易一些。 – delnan 2010-10-02 09:29:30

回答

2

您可以使用靜態類變量。這些變量不與類實例關聯,但與類定義相關聯。

class myClass { 
    public static $classGlobal = "Default Value" ; 

    public function doStuff($inVar) { 
     myClass::$classGlobal = $inVar ; 
    } 
} 

echo myClass::$classGlobal."\n" ; 
$instance = new myClass() ; 
echo myClass::$classGlobal."\n" ; 
$instance->doStuff("New Value") ; 
echo myClass::$classGlobal."\n" ; 

輸出:

Default Value 
Default Value 
New Value