PHP: Статические переменные

Статические переменные - это переменные, которые не исчезают после завершения работы функции. Значение статической переменной можно использовать при следующем вызове функции - она по прежнему будет иметь то же значение, которое получила при последнем вызове функции. Статическая переменная объявляется с помощью ключевого слова static.

При объявлении статической переменной в функции создается постоянное хранилище, в результате чего статическая переменная запоминает свое последнее значение. Стоит отметить, что статическая переменная существует только в локальной области видимости функции и не видна за ее пределами:

<?php

  // определение функции
  function birth() {
    // определяем переменную age как статическую
    static $age = 0;
	
    //увеличиваем значение age на 1
    $age = $age + 1;
	
    // выводим на экран значение переменной
    echo "Значение статической переменной: $age<br>";
  }

  // вызываем дважды функцию
  birth();
  birth();

?>

В результате будет выведено:

Значение статической переменной: 1
Значение статической переменной: 2

Как вы могли заметить, теперь значение переменной $age сохраняется между вызовами функции birth(). Это значение будет существовать, пока выполнение программы не завершится.

Замечание: статические переменные имеют одну особенность, во время объявления переменной (ее инициализации), ей может быть присвоено только статическое значение. Попытка присвоить этим переменным значения, являющиеся результатом выполнения работы выражений, вызовет ошибку обработки:

<?php

  function foo() {
    static $x = 5;          // верно (статическое значение)
    static $x = 1+2;        // неверно  (поскольку это выражение)
    static $x = sqrt(121);  // неверно  (поскольку это тоже выражение)

    $x++;
    echo $x;
  }

?>

Итак, нам осталось рассмотреть еще один тип переменных - суперглобальные переменные.

    
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011-2016 © puzzleweb.ru

Реклама на сайте | Обратная связь