Documentación offline PHP master

$GLOBALS

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

\$GLOBALS

Hace referencia a todas las variables disponibles en un contexto global

Descripción#

Un array asociativo que contiene referencias a todas las variables globales actualmente definidas en el contexto de ejecución global del script. Los nombres de las variables son los índices del array.

Ejemplos#

Ejemplo con $GLOBALS

<?php

function test()
{
    $foo = "variable local";

    echo '$foo en el contexto global : ' . $GLOBALS["foo"] . "\n";
    echo '$foo en el contexto actual : ' . $foo . "\n";
}

$foo = "Contenido de ejemplo";
test();

?>

Resultado del ejemplo anterior es similar a:

$foo en el contexto global : Contenido de ejemplo
$foo en el contexto actual : variable local

[!WARNING] A partir de PHP 8.1.0, el acceso en escritura al array entero $GLOBALS ya no es soportado:

Escribir en el array entero $GLOBALS resultará en un error.

``` <?php

// Genera un error durante la compilación: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); array_pop($GLOBALS); // ...y cualquier otra operación de escritura/lectura-escritura en $GLOBALS

?>

```

Notas#

[!NOTE] Esto es una 'superglobal', o variable global automática. Esto significa simplemente que esta variable está disponible en todos los contextos del script. No es necesario hacer global $variable; para acceder a ella en las funciones o los métodos.

[!NOTE] A diferencia de todas las demás superglobales, $GLOBALS siempre ha estado disponible en PHP.

[!NOTE] A partir de PHP 8.1.0, $GLOBALS es ahora una copia de solo lectura del array de símbolos global. Es decir, las variables globales no pueden ser modificadas a través de su copia. Anteriormente, el array $GLOBALS estaba excluido del comportamiento habitual por valor de los arrays de PHP y las variables globales podían ser modificadas a través de su copia.

``` <?php

// Antes de PHP 8.1.0 $a = 1;

$globals = $GLOBALS; // Copia ostensiblemente por valor $globals['a'] = 2; var_dump($a); // int(2)

// A partir de PHP 8.1.0 // esto ya no modifica $a. El comportamiento anterior violaba la semántica por valor. $globals = $GLOBALS; $globals['a'] = 1;

// Para restaurar el comportamiento anterior, iterar su copia y asignar cada propiedad de vuelta a $GLOBALS. foreach ($globals as $key => $value) { $GLOBALS[$key] = $value; }

?>

```