方法中的静态变量不会在实例取消设置时重置


Static variable in method doesn't reset on instance unset

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;
?>

问题:既然我们在再次调用Foo->Bar()之前取消了整个实例的设置,那么如何打印 2呢?

请注意,这个问题和它的答案并不能回答我的问题。

问好。

您可以查看php文档中的变量作用域。

如果在函数中声明一个变量为静态,那么对于整个类及其所有实例,而不是每个对象。

静态变量与单个实例无关。