В этой статье пойдет разговор о том, что такое глобальные переменные в PHP и чем они отличаются от локальных. Также читатель узнает о том, как использовать ассоциативный массив $GLOBALS вместо ключевого слова Global. Пояснения будут даны на конкретных примерах.

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

Глобальные значения, в отличие от локальных, доступны всей программе целиком, куда также входят и подпрограммы (пользовательские функции).

Для языка программирования PHP все переменные, которые объявлены и задействуются в функции, локальны для функции (так обстоят дела по умолчанию). Таким образом, по дефолту возможность поменять значение переменной global в теле функции отсутствует.

Давайте представим, что мы в теле пользовательской функции PHP захотим применить переменную с именем, причем это имя будет идентично имени глобальной переменной, которая находится вне user function. В результате никакого отношения данная локальная variable к глобальной иметь не будет. В описанном только что случае в пользовательской функции будет создана local variable, причем с именем в PHP, которое будет идентично имени global variable, однако доступна такая переменная будет лишь внутри нашей пользовательской функции.

Все вышеописанное лучше пояснить на примере:

$x = 555;

function test() {

$x = 888;

 echo «$x «;

}

test();

echo «$x»;

PHP Global: глобальные переменные

Сценарий кода выведет сначала 555, а потом 888. Чтобы избавиться от недостатка, продемонстрированного в function test (это не ошибка, а именно недостаток), в языке программирования PHP предусмотрена особая инструкция global. Эта инструкция дает возможность пользовательской функции взаимодействовать с глобальными переменными.

Рассмотрим этот принцип на очередном примере:

<?php

$x = 5;

$y = 10;

function sum()

{

     global $x, $y;

     $y = $x + $y;

}

sum();

echo $y;

?>

PHP Global: глобальные переменные

Скрипт с function sum выведет результат 15. Что тут произошло? После того, как $x и $y были определены внутри нашей функции в качестве global, все существующие ссылки на любую из этих статических переменных стали указывать уже на их глобальную версию. При данных обстоятельствах отсутствуют какие-либо ограничения на количество global variables, доступных к обработке с помощью user functions.

PHP и глобальные переменные. Массив $GLOBALS

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

$x = 5;

$y = 10;

function sum()

{

     $GLOBALS[«y»] = $GLOBALS[«x»] + $GLOBALS[«y»];

}

sum();

echo $y;

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

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

PHP Global: глобальные переменные

Источник: http://www.php.su/learnphp/vars/?glvars.

Хотите знать о PHP гораздо больше? Добро пожаловать на курс!

PHP Global: глобальные переменные