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

Термин область действия (scope) относится к тем разделам сценария, внутри которых возможен доступ к некоторой конкретной переменной, иначе говоря, область, из любого места которой видна эта переменная. В РНР используются следующих шесть базовых правил определения области действия.

■ Встроенные суперглобальные переменные видны из любого места сценария.

■ Константы, как только они объявлены, всегда видимы глобально, т.е. могут использоваться как внутри, так и вне функций.

■ Глобальные переменные, объявленные в сценарии, видны в любом месте сценария, но не внутри функций.

■ Переменные, использованные внутри функций, которые объявлены как глобальные, ссылаются на глобальные переменные с теми же именами.

■ Переменные, созданные внутри функции и объявленные как статические, невидимы за пределами функции, однако они сохраняют свои значения между двумя вызовами этой функции.

■ Переменные, созданные внутри функции, являются локальными по отношению к своей функции и прекращают свое существование после завершения функции.

Массивы $_GET и $_POST и ряд других специальных переменных подчиняются своим собственным правилам, определяющим их области действия. Они принадлежат к категории суперглобальных (или автоглобальных) переменных и видимы везде, как внутри функций, так и за их пределами.

Ниже представлен полный список суперглобальных переменных.

$GLOBALS. Массив всех глобальных переменных. Подобно ключевому слову global, этот массив позволяет получать доступ к глобальным переменным внутри функции, например, $GLOBALS [ 'myvariable' ].

$_SERVER. Массив переменных среды сервера.

$_GET. Массив переменных, переданных в сценарий посредством метода GET.

$_POST. Массив переменных, переданных в сценарий посредством метода POST.

$_СOOКIЕ. Массив cookie-переменных.

$_FILES. Массив переменных, относящихся к загрузке файлов.

$_ENV. Массив переменных окружения.

$_REQUEST. Массив пользовательского ввода, включая содержимое массивов $_GET, $_POST и $_СOOКIЕ (начиная с РНР 4.3.0, сюда не входит $_FILES).

$_SESSI0N. Массив переменных сеанса.

По мере необходимости мы будем обращаться к этим суперглобальным типам данных.

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