2010-11-21 11 views
1

Ich weiß, dass ich $ GLOBALS ['var'] innerhalb einer Funktion verwenden kann, um auf Variablen im globalen Gültigkeitsbereich zu verweisen. Kann ich irgendwie eine Deklaration innerhalb der Funktion verwenden, so dass ich $ var verwenden kann, ohne $ GLOBAL ['var'] jedes Mal verwenden zu müssen?Konvertieren aller Variablen in globalen Gültigkeitsbereich

Joel

+4

Der variable Umfang hat einen Zweck. Warum willst du das rückgängig machen? – Gumbo

+1

Dies ist machbar, aber höchstwahrscheinlich eine sehr schlechte Idee. Siehe @ Gumbo Frage –

+0

Ich stimme völlig zu, dass dies eine schlechte Idee ist. Aber das ist nur zum Üben, um besser zu verstehen, wie man so etwas bei Bedarf erstellt (obwohl es wiederum eine schlechte Idee ist) – Joel

Antwort

1

Obwohl es nicht zu empfehlen, aber wenn Sie wollen, hier ist was Sie tun können:

Wenn Sie nur die Werte aus den Vars bekommen (und die Werte nicht SET), verwenden Sie einfach extract:

extract($GLOBALS); 

Dieser Extrakt wird und alle Variablen im aktuellen Bereich erstellen.

+0

Missing "S" ist $ GLOBAL, aber es funktioniert super! Vielen Dank :) – Joel

1

Wie wäre es mit statischen Klassen?
wie

class example 
{ 
    public static $global; 
    public static function set($arr) 
    { 
    foreach ($arr as $key=>$val) 
    { 
     self::$global[$key] = $val; 
    } 
    } 
} 

function example_function() 
{ 
    var_dump(example::$global); 
} 

example::set(array('a'=>1, 'b'=>2)); 
example_function(); 
1

Sie können das global Schlüsselwort, So können Sie Typ $var statt $GLOBALS['var'] in einer Funktion verwenden.

function myFunc() { 
    global $var; 
    $var = 3; 
} 
$var = 1; 
myFunc(); 
echo $var; 

Ausgang: 3

Verwandte Themen