Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vtoraya_chast_uchebnika_po_WWW_Okonchat_variant...doc
Скачиваний:
31
Добавлен:
27.09.2019
Размер:
6.06 Mб
Скачать

4.5. Типизация переменных в php по их «области действия», «видимости» и «времени жизни». Глобальные, суперглобальные и статические переменные

4.5.1. Общие положения

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

Областью действия переменной называют ту часть кода, в которой сохраняется её значение. В скриптах, не содержащих функций, областью действия переменной является весь скрипт целиком. Например, если переменная была один раз использована в начале скрипта, то её значение будет сохраняться до конца скрипта или до тех пор, пока оно не будет изменено в результате использования другого оператора присваивания. Таким образом, время жизни переменной в данном случае определяется началом и концом работы скрипта.

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

При использовании функции область действия всех переменных, описанных внутри неё, ограничена пределами самой функции. Переменные функции являются локальными. В скрипте и в функциях, подключаемых к нему, можно использовать одни и те же имена для переменных, не опасаясь их «перемешивания». Все переменные функции уничтожаются при возврате управления из функции в скрипт. Если функция вызывается ещё раз, переменные формируются, что называется, с чистого листа. Точнее будет сказать, что локальные переменные функции инициируются при каждом её запуске. Поэтому временем жизни переменной внутри функции является время работы функции с момента вызова её из основной программы и до возврата к выполнению команд вызвавшей её программы.

Переменные, описанные в основном скрипте, в PHP называются глобальными, хотя для вызываемых из этого скрипта функций они являются недоступными. Чтобы переменная основного скрипта стала видимой в какой-либо функции, надо сделать её глобальной и для этой функции. С этой целью используется её описание в нужной функции оператором global. Не существует никаких ограничений на количество глобальных переменных, которые могут обрабатываться пользовательскими функциями (Пример 4-16).

Пример 4‑16

<?php

//Пример №1

$a = 1; /* переменная определена в глобальной области видимости (в базовом скрипте) */

function Test1()

{

echo $a; /* ссылка на переменную локальной области видимости */

}

Test1(); //Печати не будет, так как переменная $a не инициирована в функции

//---------------------------------------------------------------------

//Пример №2 "невидимости" глобальной переменной в функции

$a = 100;

function Test2()

{

$a = 70;

echo "<h4>$a</h4>";

}

Test2();

echo "<h2>$a</h2>";

//----------------------------------------------------------------------

/*Пример №3 - объявление переменной основной функции "глобальной"

и внутри функции */

$a = 1;

$b = 2;

function Test3()

{

global $a, $b;

$b = $a + $b;

}

Test3();

echo $b, "<br>";

?>

Второй способ доступа к переменным глобальной области видимости - использование специального, определяемого PHP массива $GLOBALS.

Этот массив является суперглобальным.

На понятии суперглобальных массивов и связанном с ним понятии предопределённых переменных следует остановиться подробнее.