PHP $GLOBALS
PHP хранит массив $GLOBALS, который содержит ссылки на все глобальные переменные вашего скрипта.
Это одна из суперглобальных переменных - встроенных переменных, к которым можно обращаться откуда угодно, независимо от области видимости.
Глобальные переменные
Глобальная переменная - это переменная, доступная из любой области видимости.
Чтобы создать её, не нужно ничего особенного: всё, что вы создаёте в самой внешней области видимости скрипта, автоматически становится глобальным, и использовать это может любая область видимости.
Исключение составляют функции. Прежде чем функция сможет использовать глобальную переменную, она должна сделать одно из двух: объявить переменную с ключевым словом global или обратиться к ней через $GLOBALS.
Обращение к глобальной переменной через $GLOBALS
Здесь функция читает глобальную переменную $x через $GLOBALS:
Вывод: PHP-скрипт
<?php
$x = 75;
function myfunction() {
echo $GLOBALS['x'];
}
myfunction();
?>
Без $GLOBALS
Если убрать $GLOBALS, функция не увидит глобальную переменную, поэтому PHP не выдаст ничего или выдаст ошибку:
Вывод: PHP-скрипт
<?php
$x = 75;
function myfunction() {
echo $x;
}
myfunction();
?>
Использование ключевого слова global
Другой вариант - ключевое слово global. Объявите с ним переменную внутри функции, и после этого вы сможете использовать простое имя:
Вывод: PHP-скрипт
<?php
$x = 75;
function myfunction() {
global $x;
echo $x;
}
myfunction();
?>
Создание глобальных переменных
Пишете вы $GLOBALS или нет, переменная, созданная на самом внешнем уровне скрипта, становится глобальной.
Переменные внешней области видимости являются глобальными
Эта переменная создаётся на верхнем уровне, а затем читается дважды: через $GLOBALS и напрямую по имени. Оба способа дают одно и то же значение:
Вывод: PHP-скрипт
<?php
$x = 100;
echo $GLOBALS['x'];
echo $x;
?>
Создание глобальной переменной внутри функции
Обычно переменная, созданная в функции, существует только внутри этой функции. Запись в $GLOBALS меняет это: новый элемент становится глобальной переменной, которую может использовать остальная часть скрипта, как здесь происходит с $z:
Вывод: PHP-скрипт
<?php
$x = 10;
$y = 20;
function result() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
result();
echo $z;
?>