1. Erläuterungen
Variablen haben gewöhnlich einen Geltungsbereich (Scope), sodass in einer Funktion definierte Variablen für andere Funktionen nicht verfügbar sind. Es ist aber auch möglich, Variablen in einem globalen Geltungsbereich zu platzieren, wodurch sie von überall abgerufen werden können. Der Zugriff auf diese erfolgt dann über das Schlüsselwort „global” oder das $GLOBALS-Array.
2. Beispiel: Globale Variable definieren
Nachfolgend werden zwei globale Variablen definiert. Von einer Funktion aus soll auf diese zugegriffen werden. Dafür muss „global” oder $GLOBALS verwendet werden.
<?php error_reporting(E_ALL); // Diese beiden Variablen sind automatisch globale Variablen, da sie im obersten // Geltungsbereich (ausserhalb aller Funktionen) definiert werden $beispiel1 = 'Das ist eine globale Variable'; $beispiel2 = 'Das ist auch eine globale Variable'; function test() { global $beispiel1; // für den Rest dieser Funktion kann direkt auf $beispiel1 zugegriffen werden echo($beispiel1 . "\n"); echo($GLOBALS['beispiel2'] . "\n"); // nur einmaliger Zugriff auf globale Variable $beispiel2 echo($beispiel2 . "\n"); // jetzt ist $beispiel2 schon nicht mehr bekannt, es entsteht ein Fehler } test(); ?>
Das ist eine globale Variable Das ist auch eine globale Variable <br /> <b>Notice</b>: Undefined variable: beispiel2 in <b>...\test.php</b> on line <b>11</b><br />
3. Beispiel: Mehrere Variablen als global kennzeichnen
Das Schlüsselwort „global” kann auch auf mehrere Variablen gleichzeitig angewendet werden.
<?php error_reporting(E_ALL); $glob1 = 'globale Variable 1'; $glob2 = 'globale Variable 2'; $glob3 = 'globale Variable 3'; function test() { global $glob1, $glob2, $glob3; echo $glob1, ", ", $glob2, ", ", $glob3; } test(); ?>
globale Variable 1, globale Variable 2, globale Variable 3
4. Beispiel: In globale Variablen schreiben
In globale Variablen kann von überall aus geschrieben werden. Die Änderungen sind dann ebenfalls global verfügbar.
<?php error_reporting(E_ALL); $glob1 = 'globale Variable 1'; $glob2 = 'globale Variable 2'; function test1() { global $glob1; $glob1 = 'test1'; $GLOBALS['glob2'] = 'test2'; echo "test1(): ", $glob1, ", ", $GLOBALS['glob2'], "\n"; } function test2() { global $glob1, $glob2; echo "test2(): ", $glob1, ", ", $glob2; } test1(); test2(); ?>
test1(): test1, test2 test2(): test1, test2
5. Beispiel: Klasse statt globaler Variablen
Statt globaler Variablen sollten Klassen verwendet werden, wodurch die Lesbarkeit und Wartbarkeit des Codes verbessert wird.
<?php class Config { public static function getGlobal1() { return 'global1'; } public static function getGlobal2() { return 'global2'; } } function test() { echo(Config::getGlobal1() . "\n"); echo(Config::getGlobal2() . "\n"); } test(); ?>
global1 global2
Kommentare (1)
Von neu nach altWir bitten um ihr Verständnis.
öä-