Ne php7 encore le support des variables globales?
Il est possible d'utiliser une variable globale au sein de la fonction dans php7? Il a fonctionné correctement en php5.4.
J'ai constaté que le mot-clé mondiale n'est pas utile plus dans php7:
mondiale accepte uniquement des variables de type simple migration70.incompatible
Mais Il y a sur la page à propos GLOBALS réservés.les variables.globals
il est encore écrit que (PHP 4, PHP 5, PHP 7) devrait soutenir GLOBALS.
Malheureusement, rien ne fonctionne pour moi:
function printGlobal(){
global ${$a};
global $b;
echo '<br/>-'.${$a};
echo '<br/>-'.$b;
echo '<br/>-'.$GLOBALS['c'];
}
$a = "hello";
$b = 7;
$c = 6;
printGlobal();
de sortie:
-
-
-
S'il vous plaît ne pas commencer une discussion sur la façon d'éviter de l'utilisation de variables globales 🙂
--- EDIT:
J'ai raté, que X.php fichier, j'ai travaillé avec est inclus withinin index.php fichier dans une fonction includeAnotherPage(..). Ainsi, une variable définie dans X.php le fichier ne peut pas être une variable globale - parce que tout X.php le fichier est déjà en fonction. Par conséquent, les codes, écrit ci-dessus, ne fonctionne pas.
Ok merci pour les réponses. Je suis stupide, et l'article m'enferma dans le sentiment que globals peut être désactivé.
- Quelle version de php que vous utilisez? Le premier, bien sûr, ne fonctionne pas, mais les autres devraient fonctionner: 3v4l.org/Zj5LF#v510
- Votre sortie est incorrect. il est
- -7 -6
- Fonctionne, mais
$a
est pas défini dans la fonction tant que vous ne mettez pasglobal $a;
avant de l'utiliser. - Comme @CharlotteDunois mentionné, vous devez définir toutes les variables globales avant de définir la fonction d'où vous appelez de vos variables, et donc $a, $b, $c aller au-dessus de printGlobal()
- Pas de. Le code exact imprimé ci-dessus donne la sortie
- -7 -6
pas besoin de changer quoi que ce soit. PHP ver. 7.0.10 - Ne devriez-vous pas déclarer la variable comme une variable globale avant d'assigner une valeur ou l'utilisation d'une fonction? Donc, en haut de la page il suffit de faire "global $a;" avant u ne "$a=6;"
- Ce qui ne fonctionne plus est à l'échelle mondiale avec les variables. Mais presque tout de l'utilisation de variables signe d'une mauvaise conception de commencer, vous devez utiliser un tableau associatif à la place.
Vous devez vous connecter pour publier un commentaire.
PHP vous donne également la possibilité de définir des Variables Globales à l'aide de l'un des Super-Globales:
$GLOBALS
. Donc, vous pourriez faire quelque chose comme ci-dessous qui vous pourriez TEST RAPIDE Ici ainsi:Votre code est presque bon, mais vous avez un problème de syntaxe. Ce code est presque le même que le votre, mais il fonctionne (testé avec PHP 7.0.12).
Comme vous pouvez le voir, dans
printGlobal
je viens de le préciser, je suis à l'aide de $a et $b global, et à l'écho, j'utilise $a la place de ${a}, parce que ${a} peut être utilisé à l'intérieur d'une double chaîne de caractères entre guillemets, ici, vous êtes à l'extérieur d'un devis.Voir $GLOBALS, qui dit-il n'est pas nécessaire d'utiliser
global $variable
parce que $GLOBALS est disponible partout.De sortie:
Notez que vous devez utiliser \n pour écrire sur une nouvelle ligne.
EDIT: Noter que dans une fonction anonyme, le
use
clétage est disponible de sorte que vous pouvez l'utiliser pour mettre des variables dans le domaine de la fonction.Voir utilisation de mots clés.