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文档中的变量作用域。
如果在函数中声明一个变量为静态,那么对于整个类及其所有实例,而不是每个对象。