Интересное поведение в PHP 5.6.12-arm и PHP 7 RC3 (хотя я полагаю, что так во всех версиях, я просто хотел отметить, какие версии я использовал для тестирования):
<?php
class Foo {
public function Bar() {
static $var = 0;
return ++$var;
}
}
$Foo_instance = new Foo;
print $Foo_instance->Bar(); // prints 1
print PHP_EOL;
unset($Foo_instance);
$Foo_instance2 = new Foo;
print $Foo_instance2->Bar(); // prints 2 - but why?
print PHP_EOL;
?>
Вопрос: Как можно напечатать 2, так как мы удалили весь экземпляр перед повторным вызовом Foo-> Bar ()?
Обратите внимание, что этот вопрос и его ответы не отвечают на мой вопрос.
С наилучшими пожеланиями.
Вы можете посмотреть в документации PHP область видимости переменных.
если вы объявите переменную как статическую внутри функции, она будет статической для
весь класс и все его экземпляры, а не для каждого объекта.
Таким образом, статическая переменная не связана ни с одним экземпляром.
Других решений пока нет …