$GLOBALS
(PHP 4, PHP 5, PHP 7, PHP 8)
$GLOBALS — Ссылается на переменные глобальной области видимости
Описание
Ассоциативный массив (array), который содержит ссылки на каждую переменную,
которую в текущий момент определили в глобальной области видимости скрипта. Имена переменных — ключи массива.
Примеры
Пример #1 Пример использования суперглобального массива $GLOBALS
<?php
function test()
{
$foo = "Локальная переменная";
echo 'Значение переменной $foo в глобальной области видимости: ' . $GLOBALS["foo"] . "\n";
echo 'Значение переменной $foo в текущей области видимости: ' . $foo . "\n";
}
$foo = "Пример содержимого";
test();
?>
Вывод приведённого примера будет похож на:
Значение переменной $foo в глобальной области видимости: Пример содержимого
Значение переменной $foo в текущей области видимости: Локальная переменная
Внимание
Начиная с PHP 8.1.0 доступ на запись всего массива $GLOBALS больше не поддерживается:
Пример #2 Пример записи всего массива $GLOBALS выдаёт ошибку
<?php
// Присваивания, которые генерируют ошибку во время компиляции:
$GLOBALS = [];
$GLOBALS += [];
$GLOBALS =& $x;
$x =& $GLOBALS;
unset($GLOBALS);
array_pop($GLOBALS);
// ...и любая другая операция записи или чтения-записи в массив $GLOBALS
?>
Примечания
Замечание:
Это «суперглобальная»,
или автоматическая глобальная, переменная. Это просто означает, что она доступна во всех контекстах скрипта.
Нет необходимости выполнять global $variable; для доступа к ней внутри метода или функции.
Замечание:
Доступность переменной
В противоположность остальным суперглобальным переменным,
суперглобальная переменная $GLOBALS доступна в PHP в каждом месте кода.
Замечание:
С PHP 8.1.0 суперглобальный массив $GLOBALS стал доступной только для чтения копией
глобальной таблицы символов.
Поэтому глобальные переменные нельзя изменять через копию массива переменных глобальной области видимости.
Раньше массив $GLOBALS исключался из обычного поведения массивов PHP
по значению и глобальные переменные разрешалось изменять через копию суперглобального массива.