<?php $foo = 1; function meh(){ // <-- $foo can't be accessed } It doesn't look like a global variable. However, does it have disadvantages like global stuff if it's outside the function?
6 Réponses :
<?php $foo = 1; function meh(){ global $foo; // <-- $foo now can be accessed } ?>
En dehors de la fonction est sorta comme une portée globale (par rapport aux langages de type C), mais vous devez faire une chose pour permettre l'accès au VAR dans une fonction:
function meh(){ global $foo; // $foo now exists in this scope }
oui. strong> ils sont accessibles depuis n'importe quel endroit, y compris d'autres scripts. Ils sont légèrement em> mieux que vous devez utiliser le mot-clé code> global code> pour y accéder de dans une fonction, ce qui donne plus de clarté sur l'endroit où ils viennent et ce qu'ils font. p>
Dans votre exemple php n'a pas de vraies variables globales. Vous devez l'alias manuellement en utilisant le $ FOO code> est créé comme variable dans la portée globale. (Sauf si votre script indiqué était
inclus () code> dans une autre fonction / méthodes de portée.) P>
FOO GLOBAL $; code> instruction pour y accéder. (Aussi la "chose de Global est mauvais" conseiller est juste que, de mauvais avis.) P>
Si je comprends bien votre question correctement, il ne devrait vraiment pas y avoir de problème. Sauf si vous déclarez une variable en tant que globale, elle aura été limitée à la portée dans laquelle il est déclaré, dans ce cas quel que soit le fichier PHP du code ci-dessus. Vous pouvez déclarer une autre variable $ foo à Meh () et ce serait indépendant de la FOO $ définie à l'extérieur. P>
Toutes les variables définies en dehors de toute fonction sont déclarées dans la portée mondiale. Si vous souhaitez accéder à une variable globale, vous avez deux choix:
Utilisez le mot-clé global em> p>
ou utilisez les $ global em> p>
<?php
$a = 1;
$b = 2;
function Sum()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
?>
<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
?>