9
votes

Faire toutes les variables globales, PHP

Y a-t-il un moyen de faire toutes les variables globales?


1 commentaires

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'])


6 Réponses :


9
votes

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.

Mais en bref, il n'y a pas de moyen simple de le faire sans beaucoup de déclarations globales.


0 commentaires

8
votes

Way rapide et sale:

$GLOBALS += get_defined_vars();


2 commentaires

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 écrase toute variable globale existante, mais n'ajoutez que celles qui n'existaient pas avant, en raison de La manière dont l'opérateur + entre les tableaux . Faire foreach (get_defined_vars () comme $ k => $ v) $ globaux [$ k] = $ v; si vous voulez écraser. Ou mieux encore: ne le faites jamais du tout.



5
votes

Je pense que cela peut aider foreach ($ globals comme $ nom => Value de valeur) Global $$ nom; Mettez-le à l'intérieur de la fonction et vous aurez toutes les variables définies visibles


0 commentaires

15
votes

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)


0 commentaires

3
votes

Vous pouvez simplement en faire une référence à $ global xxx pré>


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> xxx pré>

surveille p> xxx pré>


$k=& $v;


0 commentaires

0
votes

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.


0 commentaires