Статическая переменная инициализируется один раз и сохраняет значение между вызовами функции:
function counter(): int {
static $count = 0;
return ++$count;
}
echo counter(); // 1
echo counter(); // 2
echo counter(); // 3
Инициализатор выполняется только при первом вызове. Значение сохраняется до конца запроса (не между запросами). В PHP 8.1+ инициализатор может содержать new выражения.