Бывают случаи, когда требуется переменная, имеющая глобальную область видимости, поскольку нужно, чтобы к ней имелся доступ из всего кода программы. К тому же некоторые данные могут быть настолько объемными и сложными, что их не захочется передавать функциям в качестве аргументов.
Чтобы объявить переменную, имеющую глобальную область видимости, используется ключевое слово global
. Предположим, что существует некий способ входа пользователей на ваш веб-сайт и нужно, чтобы весь код программы знал, с кем он имеет дело — с зарегистрированным пользователем или с гостем. Один из способов решения этой задачи заключается в создании глобальной переменной $is_logged_in
:
global $is_logged_in;
Теперь вашей функции входа в систему нужно лишь при удачной попытке входа на сайт присвоить этой переменной значение 1, а при неудачной попытке — значение 0. Поскольку переменная обладает глобальной областью видимости, доступ к ней может быть получен из любой строки кода вашей программы.
Но пользоваться глобальными переменными нужно с оглядкой. Рекомендуем создавать их только в том случае, если без них совершенно невозможно добиться нужного результата.
Вообще-то программы, разбитые на небольшие фрагменты и отдельные данные, содержат меньше ошибок и проще в обслуживании. Если ваша программа состоит из нескольких тысяч строк кода (а когда-нибудь такое случится) и оказалось, что где-то глобальная переменная имеет неверное значение, то сколько времени уйдет на поиски кода, который присваивает ей это значение?
Кроме того, если используется слишком много глобальных переменных, возникает риск воспользоваться одним из их имен еще раз в локальном пространстве или по крайней мере полагать, что такая переменная используется локально, хотя на самом деле она уже была объявлена в качестве глобальной. Из таких вот ситуаций и возникают разные непонятные ошибки.
Локальные переменные | Статические переменные |