0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>В этой статье пойдет разговор о том, что такое<strong>глобальные переменные в PHP</strong>и чем они отличаются от локальных. Также читатель узнает о том, как использовать ассоциативный массив $GLOBALS вместо ключевого слова Global. Пояснения будут даны на конкретных примерах.</p>
1
<p>В этой статье пойдет разговор о том, что такое<strong>глобальные переменные в PHP</strong>и чем они отличаются от локальных. Также читатель узнает о том, как использовать ассоциативный массив $GLOBALS вместо ключевого слова Global. Пояснения будут даны на конкретных примерах.</p>
2
<p>В языке программирования PHP существует понятие глобальных переменных (globally variables). Но для начала следует вспомнить о переменных<strong>локальных</strong>. Последние определены внутри пользовательской функции (внутри подпрограммы), причем на нее вы сможете ссылаться лишь в этой функции. Таким образом, локальная variable доступна лишь внутри той функции, в которой она определена (доступна в локальной области видимости).</p>
2
<p>В языке программирования PHP существует понятие глобальных переменных (globally variables). Но для начала следует вспомнить о переменных<strong>локальных</strong>. Последние определены внутри пользовательской функции (внутри подпрограммы), причем на нее вы сможете ссылаться лишь в этой функции. Таким образом, локальная variable доступна лишь внутри той функции, в которой она определена (доступна в локальной области видимости).</p>
3
<p><strong>Глобальные</strong>значения, в отличие от локальных, доступны всей программе целиком, куда также входят и подпрограммы (пользовательские функции).</p>
3
<p><strong>Глобальные</strong>значения, в отличие от локальных, доступны всей программе целиком, куда также входят и подпрограммы (пользовательские функции).</p>
4
<p>Для языка программирования PHP все переменные, которые объявлены и задействуются в функции, локальны для функции (так обстоят дела по умолчанию). Таким образом, по дефолту возможность поменять значение переменной global в теле функции отсутствует.</p>
4
<p>Для языка программирования PHP все переменные, которые объявлены и задействуются в функции, локальны для функции (так обстоят дела по умолчанию). Таким образом, по дефолту возможность поменять значение переменной global в теле функции отсутствует.</p>
5
<p>Давайте представим, что мы в теле пользовательской функции PHP захотим применить переменную с именем, причем это имя будет идентично имени глобальной переменной, которая находится вне user function. В результате никакого отношения данная локальная variable к глобальной иметь не будет. В описанном только что случае в пользовательской функции будет создана local variable, причем с именем в PHP, которое будет идентично имени global variable, однако доступна такая переменная будет лишь внутри нашей пользовательской функции.</p>
5
<p>Давайте представим, что мы в теле пользовательской функции PHP захотим применить переменную с именем, причем это имя будет идентично имени глобальной переменной, которая находится вне user function. В результате никакого отношения данная локальная variable к глобальной иметь не будет. В описанном только что случае в пользовательской функции будет создана local variable, причем с именем в PHP, которое будет идентично имени global variable, однако доступна такая переменная будет лишь внутри нашей пользовательской функции.</p>
6
<p>Все вышеописанное лучше пояснить на примере:</p>
6
<p>Все вышеописанное лучше пояснить на примере:</p>
7
<p>$x = 555;</p>
7
<p>$x = 555;</p>
8
<p>function test() {</p>
8
<p>function test() {</p>
9
<p>$x = 888;</p>
9
<p>$x = 888;</p>
10
<p> echo "$x ";</p>
10
<p> echo "$x ";</p>
11
<p>}</p>
11
<p>}</p>
12
<p>test();</p>
12
<p>test();</p>
13
<p>echo "$x";</p>
13
<p>echo "$x";</p>
14
<p>Сценарий кода выведет сначала 555, а потом 888. Чтобы избавиться от недостатка, продемонстрированного в function test (это не ошибка, а именно недостаток), в языке программирования PHP предусмотрена особая инструкция <strong>global</strong>. Эта инструкция дает возможность пользовательской функции взаимодействовать с глобальными переменными.</p>
14
<p>Сценарий кода выведет сначала 555, а потом 888. Чтобы избавиться от недостатка, продемонстрированного в function test (это не ошибка, а именно недостаток), в языке программирования PHP предусмотрена особая инструкция <strong>global</strong>. Эта инструкция дает возможность пользовательской функции взаимодействовать с глобальными переменными.</p>
15
<p>Рассмотрим этот принцип на очередном примере:</p>
15
<p>Рассмотрим этот принцип на очередном примере:</p>
16
<p><?php</p>
16
<p><?php</p>
17
<p>$x = 5;</p>
17
<p>$x = 5;</p>
18
<p>$y = 10;</p>
18
<p>$y = 10;</p>
19
<p>function sum()</p>
19
<p>function sum()</p>
20
<p>{</p>
20
<p>{</p>
21
<p> global $x, $y;</p>
21
<p> global $x, $y;</p>
22
<p> $y = $x + $y;</p>
22
<p> $y = $x + $y;</p>
23
<p>}</p>
23
<p>}</p>
24
<p>sum();</p>
24
<p>sum();</p>
25
<p>echo $y;</p>
25
<p>echo $y;</p>
26
<p>?></p>
26
<p>?></p>
27
<p>Скрипт с function sum выведет результат 15. Что тут произошло? После того, как<em>$x</em> и <em>$y</em> были определены внутри нашей функции в качестве <strong>global,</strong> все существующие ссылки на любую из этих статических переменных стали указывать уже на их глобальную версию. При данных обстоятельствах отсутствуют какие-либо ограничения на количество global variables, доступных к обработке с помощью user functions.</p>
27
<p>Скрипт с function sum выведет результат 15. Что тут произошло? После того, как<em>$x</em> и <em>$y</em> были определены внутри нашей функции в качестве <strong>global,</strong> все существующие ссылки на любую из этих статических переменных стали указывать уже на их глобальную версию. При данных обстоятельствах отсутствуют какие-либо ограничения на количество global variables, доступных к обработке с помощью user functions.</p>
28
<h2>PHP и глобальные переменные. Массив $GLOBALS</h2>
28
<h2>PHP и глобальные переменные. Массив $GLOBALS</h2>
29
<p>Есть и другой способ, обеспечивающий доступ к глобальной области видимости. Он заключается в применении специального массива , определяемого PHP. Мы можем переписать предыдущий пример иначе, задействовав $GLOBALS:</p>
29
<p>Есть и другой способ, обеспечивающий доступ к глобальной области видимости. Он заключается в применении специального массива , определяемого PHP. Мы можем переписать предыдущий пример иначе, задействовав $GLOBALS:</p>
30
<p>$x = 5;</p>
30
<p>$x = 5;</p>
31
<p>$y = 10;</p>
31
<p>$y = 10;</p>
32
<p>function sum()</p>
32
<p>function sum()</p>
33
<p>{</p>
33
<p>{</p>
34
<p> $GLOBALS["y"] = $GLOBALS["x"] + $GLOBALS["y"];</p>
34
<p> $GLOBALS["y"] = $GLOBALS["x"] + $GLOBALS["y"];</p>
35
<p>}</p>
35
<p>}</p>
36
<p>sum();</p>
36
<p>sum();</p>
37
<p>echo $y;</p>
37
<p>echo $y;</p>
38
<p><strong>$GLOBALS</strong>является ассоциативным массивом, его ключ - это имя, его значение - это содержимое глобальной переменной. Важно обратить внимание на тот факт, что $GLOBALS может существовать практически в любой области видимости, что объясняется следующим образом: данный массив является<strong>суперглобальным</strong>.</p>
38
<p><strong>$GLOBALS</strong>является ассоциативным массивом, его ключ - это имя, его значение - это содержимое глобальной переменной. Важно обратить внимание на тот факт, что $GLOBALS может существовать практически в любой области видимости, что объясняется следующим образом: данный массив является<strong>суперглобальным</strong>.</p>
39
<p>Ниже расположен пример, который демонстрирует возможности использования суперглобальных переменных:</p>
39
<p>Ниже расположен пример, который демонстрирует возможности использования суперглобальных переменных:</p>
40
<p><em>Источник:<a>http://www.php.su/learnphp/vars/?glvars</a>.</em></p>
40
<p><em>Источник:<a>http://www.php.su/learnphp/vars/?glvars</a>.</em></p>
41
<p>Хотите знать о PHP гораздо больше? Добро пожаловать на курс!</p>
41
<p>Хотите знать о PHP гораздо больше? Добро пожаловать на курс!</p>
42
<a></a>
42
<a></a>