$GLOBALS

(PHP 4, PHP 5)

$GLOBALSReferences all variables available in global scope

Description

An associative array containing references to all variables which are currently defined in the global scope of the script. The variable names are the keys of the array.

Examples

Example #1 $GLOBALS example

<?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();
?>

The above example will output something similar to:

$foo in global scope: Example content
$foo in current scope: local variable

Notes

Note:

This is a 'superglobal', or automatic global, variable. This simply means that it is available in all scopes throughout a script. There is no need to do global $variable; to access it within functions or methods.

Note: Variable availability

Unlike all of the other superglobals, $GLOBALS has essentially always been available in PHP.

Коментарии

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.
2011-06-29 09:32:33
http://php5.kiev.ua/manual/ru/reserved.variables.globals.html
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

<?php
/**
 * Result:
 * POST: B, Variable: C
 * GLOBALS: C, Variable: C
 */
 
// Testing $_POST
$_POST['A'] = 'B';
 
$nonReferencedPostVar $_POST;
$nonReferencedPostVar['A'] = 'C';
 
echo 
'POST: '.$_POST['A'].', Variable: '.$nonReferencedPostVar['A']."\n\n";
 
// Testing Globals
$GLOBALS['A'] = 'B';
 
$nonReferencedGlobalsVar $GLOBALS;
$nonReferencedGlobalsVar['A'] = 'C';
 
echo 
'GLOBALS: '.$GLOBALS['A'].', Variable: '.$nonReferencedGlobalsVar['A']."\n\n";
2013-06-11 20:58:28
http://php5.kiev.ua/manual/ru/reserved.variables.globals.html
I finally found information about superglobals not being found in $GLOBALS:

https://bugs.php.net/bug.php?id=65223&edit=2
-------------------------------------
 [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. 

<?php
$_SERVER
;
print_r($GLOBALS);
?>

will list it. You can also control this using auto_gloals_jit in php.ini: ini.core#ini.auto-globals-jit
-------------------------------------

language.variables.variable
-------------------------------------
Warning
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.
-------------------------------------
2016-10-21 02:31:40
http://php5.kiev.ua/manual/ru/reserved.variables.globals.html
We can be more clear with the extension of the given example.

Before PHP Version 8.1

<?php
  $a 
1;
 
$globals $GLOBALS;
 
$globals['a'] = 2;
  echo 
$a// 2
 
echo $globals['a']; // 2
 
echo $GLOBALS['a'];  // 2
?>

After PHP Version 8.1

<?php
  $a 
1;
 
$globals $GLOBALS;
 
$globals['a'] = 2;
  echo 
$a// 1
 
echo $globals['a']; // 2
 
echo $GLOBALS['a'];  // 1
?>
2022-12-01 10:25:31
http://php5.kiev.ua/manual/ru/reserved.variables.globals.html

    Поддержать сайт на родительском проекте КГБ