Дисклеймер: данная статья не явит вам какого то откровения и не откроет третий глаз, но позволит разобраться в не очень очевидном вопросе более детально. Мне по крайней мере при ее написании она в этом помогла. Если вы матерый волк в php то можете не читать, опытным человекам думаю не повредит пробежать глазами, освежить так сказать в памяти, остальным будет норм.
Итак...
Статические переменные, в php это особый вид переменных, которые объявляются при помощи ключевого слова static.
static $foo = 3;
От обычных переменных они отличаются тем что (далее в статье эти пункты будут рассмотрены более подробно):
- могут быть присвоены только константы и константные выражения
- время жизни статической переменной не ограничено временем жизни области видимости в которой она была объявлена
- могут быть определены в скрипте лишь однажды
- не уничтожаются до конца выполнения скрипта
Теперь по порядку.
1. Могут быть присвоены только константы и константные выражения
Это значит что в статическую переменную не может быть присвоен результат работы какой-либо функции или метода, или вообще что-либо что еще не известно на этапе компиляции. То есть вот такое объявление не сработает