HTML Diff
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>&lt;?php</p>
16 <p>&lt;?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>?&gt;</p>
26 <p>?&gt;</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>