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

Область видимости переменных в PHP

Объявить переменную PHP можно в любом месте скрипта, но это не значит, что использовать её можно везде. Часть скрипта, где переменная доступна, называется её областью видимости, и таких областей три вида: local, global и static.


Глобальная и локальная область видимости

Область видимости переменной зависит от того, где вы её объявляете. Объявленная вне функции, она имеет область видимости global и недоступна внутри функций. Объявленная внутри функции, она имеет область видимости local и существует только для этой функции.

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

$x создаётся вне myTest(), поэтому функция её не видит и не выводит никакого значения. Только echo вне функции показывает 5:

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

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

На этот раз $x создаётся внутри myTest(), поэтому 5 показывает только echo самой функции. Строке вне функции нечего выводить:

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

Ключевое слово global в PHP

Функция всё же может обратиться к глобальной переменной, если вы об этом попросите. Внутри функции напишите ключевое слово global перед именами переменных.

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

С global $x, $y; функция работает непосредственно с внешними переменными, поэтому новое значение $y сохраняется и после завершения функции:

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

Использование массива $GLOBALS

PHP также хранит все глобальные переменные в массиве с именем $GLOBALS[index]. Функция может читать и изменять их через этот массив, как и делает этот код:

Prompt
Напишите PHP-скрипт, который объявляет две глобальные переменные $x = 5 и $y = 10. Создайте функцию с именем myTest, которая использует массив $GLOBALS для доступа к $x и $y и сохраняет их сумму в $GLOBALS['y']. Вызовите функцию и выведите $y с помощью echo.
Вывод: PHP-скрипт

Ключевое слово static в PHP

Обычно переменные функции исчезают, как только она завершает работу. Но иногда нужно, чтобы локальная переменная дожила до следующего вызова, потому что её значение ещё понадобится. Просто добавьте ключевое слово static при первом её объявлении:

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

Поскольку $x объявлена как static, каждый вызов продолжает с того места, где остановился предыдущий, поэтому вывод отсчитывает 0, 1, 2:

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