Материал предоставлен https://it.rfei.ru

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

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

Интересно, а что если внутри функции есть такая локальная переменная, к которой не должно быть доступа из других частей программы, но значение которой желательно сохранять до следующего вызова функции? Зачем? Возможно, потому что нужен некий счетчик, чтобы следить за количеством вызовов функции. Решение, показанное в примере, заключается в объявлении статической переменной.

Пример. Функция, использующая статическую переменную

<?php
function test()
{
     static $count = 0;
     echo $count;
     $count++;
}
?>

В этом примере в самой первой строке функции создается статическая переменная по имени $count, которой присваивается нулевое начальное значение. В следующей строке выводится значение переменной, а в последней строке это значение увеличивается на единицу.

При следующем вызове функции, поскольку переменная $count уже была объявлена, первая строка функции пропускается и до нового увеличения значения переменной $count отображается ее предыдущее значение.

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

Пример. Допустимые и недопустимые объявления статических переменных

<?php
static $int = 0;          // Допустимо
static $int = 1+2;        // Недопустимо (вызовет ошибку синтаксического разбора (Parse error))
static $int = sqrt(144);  // Недопустимо
?>
Глобальные переменныеСуперглобальные переменные