Перейти к основному содержимому

PHP $GLOBALS

PHP хранит массив $GLOBALS, который содержит ссылки на все глобальные переменные вашего скрипта.

Это одна из суперглобальных переменных - встроенных переменных, к которым можно обращаться откуда угодно, независимо от области видимости.


Глобальные переменные

Глобальная переменная - это переменная, доступная из любой области видимости.

Чтобы создать её, не нужно ничего особенного: всё, что вы создаёте в самой внешней области видимости скрипта, автоматически становится глобальным, и использовать это может любая область видимости.

Исключение составляют функции. Прежде чем функция сможет использовать глобальную переменную, она должна сделать одно из двух: объявить переменную с ключевым словом global или обратиться к ней через $GLOBALS.

Обращение к глобальной переменной через $GLOBALS

Здесь функция читает глобальную переменную $x через $GLOBALS:

Prompt
Напишите PHP-скрипт, который создаёт глобальную переменную $x со значением 75, а затем определяет функцию, использующую $GLOBALS для вывода $x с помощью echo. Вызовите функцию.
Вывод: PHP-скрипт

Без $GLOBALS

Если убрать $GLOBALS, функция не увидит глобальную переменную, поэтому PHP не выдаст ничего или выдаст ошибку:

Prompt
Напишите PHP-скрипт, который создаёт глобальную переменную $x со значением 75, а затем определяет функцию, которая пытается вывести $x с помощью echo без использования $GLOBALS или ключевого слова global. Вызовите функцию.
Вывод: PHP-скрипт

Использование ключевого слова global

Другой вариант - ключевое слово global. Объявите с ним переменную внутри функции, и после этого вы сможете использовать простое имя:

Prompt
Напишите PHP-скрипт, который создаёт глобальную переменную $x со значением 75, а затем определяет функцию, использующую ключевое слово global для доступа к $x и вывода её с помощью echo. Вызовите функцию.
Вывод: PHP-скрипт

Создание глобальных переменных

Пишете вы $GLOBALS или нет, переменная, созданная на самом внешнем уровне скрипта, становится глобальной.

Переменные внешней области видимости являются глобальными

Эта переменная создаётся на верхнем уровне, а затем читается дважды: через $GLOBALS и напрямую по имени. Оба способа дают одно и то же значение:

Prompt
Напишите PHP-скрипт, который создаёт переменную $x со значением 100, а затем выводит её с помощью echo, используя как $GLOBALS['x'], так и непосредственно $x.
Вывод: PHP-скрипт

Создание глобальной переменной внутри функции

Обычно переменная, созданная в функции, существует только внутри этой функции. Запись в $GLOBALS меняет это: новый элемент становится глобальной переменной, которую может использовать остальная часть скрипта, как здесь происходит с $z:

Prompt
Напишите PHP-скрипт, который создаёт две глобальные переменные $x и $y, а затем определяет функцию, использующую $GLOBALS, чтобы сложить их и сохранить результат в новой глобальной переменной $z. Вызовите функцию и выведите $z с помощью echo.
Вывод: PHP-скрипт