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

$GLOBALSHace referencia a todas las variables disponibles en el ámbito global


Es un array asociativo que contiene las referencias a todas la variables que están definidas en el ámbito global del script. Los nombres de las variables son las claves del array.


Ejemplo #1 Ejemplo de $GLOBALS

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

'$foo en el ámbito global: ' $GLOBALS["foo"] . "\n";
'$foo en el ámbito simple: ' $foo "\n";

$foo "Contenido de ejemplo";

El resultado del ejemplo sería algo similar a:

$foo en el ámbito global: Contenido de ejemplo
$foo en el ámbito simple: variable local



Esta es una 'superglobal' o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.

Nota: Disponibilidad de las variables

A diferencia de todas las otras superglobals, $GLOBALS ha estado esencialmente siempre disponible en PHP.

add a note

User Contributed Notes 3 notes

therandshow at gmail dot com
11 years ago
As of PHP 5.4 $GLOBALS is now initialized just-in-time. This means there now is an advantage to not use the $GLOBALS variable as you can avoid the overhead of initializing it. How much of an advantage that is I'm not sure, but I've never liked $GLOBALS much anyways.
mstraczkowski at gmail dot com
9 years ago
Watch out when you are trying to set $GLOBALS to the local variable.

Even without reference operator "&" your variable seems to be referenced to the $GLOBALS

You can test this behaviour using below code

* Result:
* POST: B, Variable: C
* GLOBALS: C, Variable: C

// Testing $_POST
$_POST['A'] = 'B';

$nonReferencedPostVar = $_POST;
$nonReferencedPostVar['A'] = 'C';

'POST: '.$_POST['A'].', Variable: '.$nonReferencedPostVar['A']."\n\n";

// Testing Globals
$GLOBALS['A'] = 'B';

$nonReferencedGlobalsVar = $GLOBALS;
$nonReferencedGlobalsVar['A'] = 'C';

'GLOBALS: '.$GLOBALS['A'].', Variable: '.$nonReferencedGlobalsVar['A']."\n\n";
vittorio.zamparella at famous googlemail
5 years ago
I finally found information about superglobals not being found in $GLOBALS:

[2013-07-09 12:00 UTC] johannes @php.net
[...]super-globals (aka. auto globals) are not added to symbol tables by default for performance reasons unless the parser sees need. i.e.


will list it. You can also control this using auto_gloals_jit in php.ini: http://www.php.net/manual/en/ini.core.php#ini.auto-globals-jit

Please note that variable variables cannot be used with PHP's Superglobal arrays within functions or class methods. The variable $this is also a special variable that cannot be referenced dynamically.
To Top