Y a-t-il un moyen de faire toutes les variables globales? P>
6 Réponses :
Peu importe ce que vous essayez de faire, mais c'est une mauvaise façon d'y aller. Vous serez beaucoup mieux pour simplement passer des variables comme des arguments aux fonctions ou en les déclarant global. P>
Mais en bref, il n'y a pas de moyen simple de le faire sans beaucoup de déclarations globales. P>
Way rapide et sale:
$GLOBALS += get_defined_vars();
L'objet ne doit pas être cloné, mais cela ne fonctionne pas avec un aliasing. Mais je dirais que c'est assez proche et d'autres choses ont plus de frais généraux: Stackoverflow.com/a/10980563/367456 ( Ajout de la réponse pour des raisons d'exhaustivité)
Note importante: Ceci sera pas i> écrase toute variable globale existante, mais n'ajoutez que celles qui n'existaient pas avant, en raison de + code> entre les tableaux . Faire
foreach (get_defined_vars () comme $ k => $ v) $ globaux [$ k] = $ v; code> si vous voulez écraser. Ou mieux encore: ne le faites jamais du tout.
Je pense que cela peut aider foreach ($ globals comme $ nom => Value de valeur) Global $$ nom; code> Mettez-le à l'intérieur de la fonction et vous aurez toutes les variables définies visibles P>
Pour importer toutes les variables globales incl. Superglobals et noms d'affection des paramètres dans les fonctions Portée:
<?php /** * Make all variables global, PHP * @link http://stackoverflow.com/q/1909647/367456 */ error_reporting(~0); function bar($goo = 1) { global $foo; $foo++; $baz = 3; foreach(get_defined_vars() as ${"\x00\x00"} => ${"\x00\x01"}) { $GLOBALS[${"\x00\x00"}] =&$${"\x00\x00"}; } } $foo = 1; bar(); echo '$goo: ', var_dump($goo); # int(1) echo '$foo: ', var_dump($foo); # int(2) echo '$baz: ', var_dump($baz); # int(3)
Vous pouvez simplement en faire une référence à $ global explication du code: p> $ globlas est une variable superglobale (visible partout). Fondamentalement contient toutes les variables p> $$ désigne la variable avec le nom de la valeur de la variable que vous avez écrite p> bit bizarre d'expliquer dans une langue étrangère alors voici un exemple : p> surveille p>
$k=& $v;
Ce n'est vraiment pas une bonne pratique pour rendre toutes les variables mondiales en matière de sécurité. Pour ajouter des variables en tant que global, vous devrez ajouter un mot-clé global à chaque fois que vous allez accéder. Une approche alternative est l'utilisation du tableau $ GLOBAL. P>
S'il est vraiment peu pratique de définir une variable globale dans une fonction générique, vous pouvez toujours utiliser le tableau $ Globalal (c'est-à-dire GLOBALALLS ['VAR_NAME'])