$GLOBALS

(PHP 4, PHP 5, PHP 7, PHP 8)

$GLOBALSRéférence toutes les variables disponibles dans un contexte global

Description

Un tableau associatif contenant les références sur toutes les variables globales actuellement définies dans le contexte d'exécution global du script. Les noms des variables sont les index du tableau.

Exemples

Exemple #1 Exemple avec $GLOBALS

<?php
function test() {
$foo = "variable locale";

echo
'$foo dans le contexte global : ' . $GLOBALS["foo"] . "\n";
echo
'$foo dans le contexte courant : ' . $foo . "\n";
}

$foo = "Exemple de contenu";
test();
?>

Résultat de l'exemple ci-dessus est similaire à :

$foo dans le contexte global : Exemple de contenu $foo dans le contexte courant : variable locale
Avertissement

À partir de PHP 8.1.0, l'accès en écriture au tableau entier $GLOBALS n'est désormais plus supportée :

Exemple #2 Écrire au tableau entier $GLOBALS résultera en une erreur.

<?php
// Génère une erreur lors de la compilation :
$GLOBALS = [];
$GLOBALS += [];
$GLOBALS =& $x;
$x =& $GLOBALS;
unset(
$GLOBALS);
array_pop($GLOBALS);
// ...et toute autre opération d'écriture/lecture-écriture sur $GLOBALS
?>

Notes

Note:

Ceci est une 'superglobale', ou variable globale automatique. Cela signifie simplement que cette variable est disponible dans tous les contextes du script. Il n'est pas nécessaire de faire global $variable; pour y accéder dans les fonctions ou les méthodes.

Note: Disponibilité des variables

Contrairement à toutes les autres superglobales, $GLOBALS a toujours été disponible en PHP.

Note:

À partir de PHP 8.1.0, $GLOBALS est désormais une copie en lecture seule du tableau de symbole global. C'est-à-dire que, les variables globales ne peuvent pas être modifié via sa copie. Auparavant, le tableau $GLOBALS était exclus du comportement usuel par-valeur des tableaux PHP et les variables globales peuvent être modifié via sa copie.

<?php
// Before PHP 8.1.0
$a = 1;
$globals = $GLOBALS; // Ostensibly by-value copy
$globals['a'] = 2;
var_dump($a); // int(2)

// As of PHP 8.1.0
// this no longer modifies $a. The previous behavior violated by-value semantics.
$globals = $GLOBALS;
$globals['a'] = 1;

// To restore the previous behavior, iterate its copy and assign each property back to $GLOBALS.
foreach ($globals as $key => $value) {
$GLOBALS[$key] = $value;
}
?>
To Top