Existe-t-il une meilleure pratique / recommandation lorsque je souhaite utiliser une variable déclarée en dehors d'une fonction lorsqu'il s'agit d'utiliser:
-
global $myVar
-
$GLOBALS['myVar']
Je vous remercie.
Existe-t-il une meilleure pratique / recommandation lorsque je souhaite utiliser une variable déclarée en dehors d'une fonction lorsqu'il s'agit d'utiliser:
global $myVar
$GLOBALS['myVar']
Je vous remercie.
Eh bien, vous ne devriez utiliser des variables globales dans des circonstances limitées, mais pour répondre à votre question:
global
est potentiellement légèrement plus rapide (il va rarement faire une différence).$GLOBALS
(pas $GLOBAL
) est plus lisible, parce que chaque fois que vous la voyez, vous savez que vous êtes d'accéder à la modification d'une variable globale. Cela peut cruciales pour éviter de méchants bugs.unset($GLOBALS['varname'])
, pas global $varname; unset($varname);
.Comme pour les points 1 et 2, je vais citer Sara Golemon ici:
Qu'est-ce que cela signifie pour votre utilisation de l'
$GLOBALS
tableau? C'est vrai, l'global
mot-clé est techniquement plus rapide. Maintenant, je veux être très clair sur une chose ici. Le mineur de vitesse affordance donné à l'aide de votre globals localisés [données compilées variables] doit être sérieusement pesé à l'encontre de la maintenabilité de regarder votre code dans les cinq ans, et sachant qu'$foo
venaient de portée globale.something_using($GLOBALS['foo']);
sera TOUJOURS plus clair pour vous sur la ligne deglobal $foo; /* buncha code */ something_using($foo);
Ne soyez pas penny sage et livre stupide..
Ce que vous devez vraiment faire, c'est passer la variable à la fonction au lieu d'utiliser un global.
Un exemple comment changer une variable en dehors de la fonction en la passant comme paramètre de référence:
function myFunc(&$myVar)
{
$myVar = 10;
}
$foo = 0;
myFunc($foo);
var_dump($foo); // yields 10
global $var;
est équivalent à $var =& $GLOBALS['var']
.
Certaines personnes ont suggéré qu'il est plus rapide que d'utiliser $GLOBALS
, cependant elle n'est pas nécessairement le cas. Si vous utilisez la variable qu'une seule fois, $GLOBALS
sera plus rapide, car vous ne perdrez pas de temps pour l'affectation.
Toutefois, si vous utilisez la variable à plusieurs reprises, en global
(ou l'équivalent d'affectation) est plus rapide, parce que la recherche dans le tableau de l' var
touche une seule fois.
Que c'est une question de vitesse. Cependant, la différence de vitesse est vraiment petit, et la lisibilité est plus important. Cependant, différentes personnes ont des préférences différentes sur la lisibilité -- je préfère global
, certaines personnes à d'autres de répondre ici préfèrent $GLOBALS
, donc c'est à vous de décider ce qui est mieux.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.