$GLOBALS['current_view']
et global $current_view
, que préférez-vous et pourquoi?Méthodes d'accès aux variables globales PHP
Répondre
Vous ne pouvez pas non plus transmettre les paramètres aux méthodes. Chaque fois que vous utilisez des globals, Dieu tue un chaton.
Si je dois utiliser des globals, et je les évite comme la peste, j'utilise global $ current_view. Je préfère simplement avoir une variable localement limitée plutôt que de compter sur des super globales. Mais je pense que c'est une question de préférence.
Personnellement, je préfère la syntaxe $GLOBALS['glob']
parce que je peux simplement copier coller le code sans avoir à se soucier de déclarer les variables comme globales. Gardez à l'esprit que vous devriez essayer de garder les globales à un minimum (peut-être juste des directives de configuration globales, et même là ...).
Cependant, les deux méthodes ne sont pas exactement synonymes; il y a une légère différence:
function func() {
var_dump($GLOBALS['glob']);
}
function func2() {
global $glob;
var_dump($glob);
}
Le premier émet un avis si le global « glob » n'existe pas. Le second ne le sera pas.
Dans le premier cas, l'envoi $GLOBALS['glob']
comme argument pour compile:
3 FETCH_R global $0 'GLOBALS'
4 FETCH_DIM_R $1 $0, 'glob'
Vous aller chercher GLOBALS
et son indice glob
dans un contexte de lecture; aucune variable n'est créée.
Le second rassemble à
compiled vars: !0 = $glob
...
2 FETCH_W global lock $0 'glob'
3 ASSIGN_REF !0, $0
Vous créez une référence à la glob
mondiale, il est donc créé implicitement si elle n'existe pas.
aussi:
function func_unset() {
unset($GLOBALS['glob']);
}
function func2_unset() {
global $glob;
unset($glob);
}
La fonction func()
sera effectivement unset mondial, func2_unset
va simplement détruire la référence qui a été créé.
Notez que func2
est très similaire à:
function func3() {
$glob =& $GLOBALS['glob'];
}
Celui-ci est cependant potentiellement moins efficace. Il compile à
2 FETCH_W global $0 'GLOBALS'
3 FETCH_DIM_W $1 $0, 'glob'
4 ASSIGN_REF !0, $1
classes statiques FTW
class View {
private static $current = null;
public static function get_current() {
return self::$current;
}
}
- 1. AS3: Accès aux variables globales
- 2. Méthodes statiques ou non? Variables globales?
- 3. php variables globales
- 4. Ajout de méthodes globales magiques aux modules
- 5. PHP et des variables globales
- 6. Variables globales?
- 7. Variables globales dans Windows.Forms
- 8. Monotouch - variables globales
- 9. C# - Variables membres passées aux méthodes internes?
- 10. problèmes avec les variables globales
- 11. Comment puis-je accéder aux variables globales dans PHPUnit 3.4.9?
- 12. Accéder aux variables globales en un éclair [: notice]
- 13. Variables globales en python
- 14. Variables globales dans Java
- 15. variables globales dans jQuery
- 16. Asp.net variables « globales »
- 17. Variables globales dans C
- 18. Nombre de variables globales
- 19. Variables globales, Javascript
- 20. variables globales en C++
- 21. variables globales dans AS3
- 22. Variables de titre globales
- 23. accéder aux variables et aux méthodes de l'objet javascript parent?
- 24. Problème avec les variables globales
- 25. variables d'application globales à webGarden
- 26. Utilisation de variables publiques globales
- 27. Variables globales dans l'objectif C
- 28. Portée de visibilité - variables globales
- 29. Desktop Application C# variables globales
- 30. Variables globales dans Visual C#
Je pense que vous devriez demander * quelle est la meilleure pratique * par opposition à ce que les gens font référence (même si elles pourraient être la même chose). – alex
@alex Il existe en fait de légères différences. – Artefacto
@Artefacto Oui, mais je préférerais coder la meilleure pratique, alors ce que quelqu'un sur Internet * préfère *. – alex