2010-10-02 9 views
3

Quelle est la meilleure façon d'obtenir une variable globale dans une classe?php - variables globales dans toutes les fonctions de classe

Je sais que je peux facilement utiliser simplement "global $ tmpVar;" à l'intérieur d'une fonction de classe, mais existe-t-il un moyen de globaliser la variable afin qu'elle soit disponible pour toutes les fonctions d'une classe sans avoir besoin de l'ugly global $ tmpVar; à l'intérieur de chaque fonction?

Idéalement juste après la déclaration "class tmpClass() {" serait super, mais pas sûr si cela est possible.

+1

connexes: http://stackoverflow.com/questions/1812472/in-a-php-project-how-do-you-organize-and-access-your -helper-objects –

+0

Pouvez-vous ajouter quelques détails sur ce que vous faites? Parce que les variables globales ne sont souvent pas la meilleure/la plus propre à aller de toute façon; Des suggestions alternatives pourraient apparaître –

+2

Ce n'est pas idéal, c'est horrible. La meilleure façon (95% du temps) est de ne pas utiliser de variables globales. Soyez content que vous ayez à utiliser le "laid" "global $ var;", cela le rendra plus facile à comprendre WTF que le code le fait assez tôt. – delnan

Répondre

2

Vous pouvez utiliser des variables de classe statique. Ces variables ne sont pas associées à une instance de classe, mais à la définition de classe.

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" ; 

Sortie:

Default Value 
Default Value 
New Value 
Questions connexes