Шаг 36.
Основы языка PHP.
Время жизни переменных

    На этом шаге мы рассмотрим время жизни переменных.

    Такое понятие, как время жизни переменных, тоже очень распространено в программировании. Например, время жизни глобальных переменных начинается с того момента, как их объявили, и заканчивается в двух случаях. Либо их уничтожили непосредственно в программе, например с помощью функции unset(), либо завершилась работа сценария.

    Общий вид функции unset() следующий:


Рис.1. Общий вид функции unset()

    Функция unset() удаляет перечисленные переменные. Приведем пример использования этой функции:

<?php
$global_var = 1;
unset($global_var);
echo $global_var;
?>

    В результате программа выводит пустую строку, так как функция unset() уничтожила переменную $global_var.

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

    Если переменная, объявленная глобальной, удаляется внутри пользовательской функции, то работать с ней в этой функции мы уже не сможем. Она станет доступна тогда и только тогда, когда будет осуществлен выход из этой функции. В этом случае глобальная переменная сохранит то же значение, что и до вызова unset().

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

<?php
function print_msg($msg)
   {
   static $num = 1;
   echo $num .") ". $msg . "<br>";
   $num++;
   }
print_msg("Начало установки программы");
print_msg("Продолжение установки программы");
print_msg("Завершение установки программы");
?>
Текст этой программы можно взять здесь.

    Результат выполнения программы вы можете увидеть на рисунке 2.


Рис.2. Результат работы скрипта

    Из примера видно, что переменная $num определяется один раз при первом вызове и не уничтожается после завершения работы функции, так как во втором вызове мы имеем дело со значением предыдущего вызова.

    Пользовательская функция должна быть небольшой по объему. Обычно программисты говорят, что функция должна умещаться на экране монитора (приблизительно 20-30 строк). Это очень удобно при написании программы.

    На следующем шаге мы рассмотрим рекурсию.




Предыдущий шаг Содержание Следующий шаг