$GLOBALS
(PHP 4, PHP 5, PHP 7, PHP 8)
$GLOBALS — Referenziert alle Variablen, die im globalen Gültigkeitsbereich
vorhanden sind
Beschreibung
Ein assoziatives Array, das Referenzen auf alle Variablen enthält,
die derzeit im globalen Gültigkeitsbereich (Scope) des Skripts bekannt sind.
Die Namen der jeweiligen Variablen sind die Schlüsselwerte, um auf den Inhalt
der jeweils referenzierten Variablen zuzugreifen.
Beispiele
Beispiel #1 $GLOBALS-Beispiel
<?php
function test()
{
$foo = "local variable";
echo '$foo in global scope: ' . $GLOBALS["foo"] . "\n";
echo '$foo in current scope: ' . $foo . "\n";
}
$foo = "Example content";
test();
?>
Das oben gezeigte Beispiel erzeugt
eine ähnliche Ausgabe wie:
$foo in global scope: Example content
$foo in current scope: local variable
Warnung
Seit PHP 8.1.0 wird der Schreibzugriff auf das gesamte
$GLOBALS-Array nicht mehr unterstützt:
Beispiel #2 Das Schreiben des gesamten $GLOBALS führt zu einem Fehler
<?php
// Erzeugt einen Kompilierungsfehler:
$GLOBALS = [];
$GLOBALS += [];
$GLOBALS =& $x;
$x =& $GLOBALS;
unset($GLOBALS);
array_pop($GLOBALS);
// ...und jede andere Schreib-/Lese-Schreiboperation auf $GLOBALS
?>
Anmerkungen
Hinweis:
Dies ist eine 'Superglobale'
oder automatisch globale Variable. Dies bedeutet, dass sie innerhalb
des Skripts in jedem Geltungsbereich sichtbar ist. Es ist nicht
nötig, sie mit global $variable bekannt zu
machen, um aus Funktionen oder Methoden darauf zuzugreifen.
Hinweis:
Verfügbarkeit der Variablen
Im Gegensatz zu allen anderen
Superglobals ist
$GLOBALS notwendigerweise immer in PHP verfügbar.
Hinweis:
Seit PHP 8.1.0 ist $GLOBALS eine schreibgeschützte
Kopie der globalen
Symboltabelle. Das
heißt, globale Variablen können nicht über diese Kopie verändert werden.
Zuvor war das Array $GLOBALS vom üblichen Verhalten der
Wertübergabe (by-value) von PHP-Arrays ausgenommen und globale Variablen
konnten über seine Kopie geändert werden.