(intended) Static variables in methods are bound to all instances of the class
Static variables in methods are bound to the class, not instances of the class.
That is, if a method has a static variable, it is global to all instances of the class. I had expected this to mean "static to that instance of that method", rather than meaning "static to the class", but it turns out this behavior is intentional.
$ cat staticvar.php
<?php
class StaticVar {
public function getNext() {
static $curNumber = 0;
return $curNumber++;
}
}
$a = new StaticVar();
$b = new StaticVar();
echo $a->getNext()."\n";
echo $a->getNext()."\n";
echo $a->getNext()."\n";
echo $b->getNext()."\n";
echo $b->getNext()."\n";
echo $b->getNext()."\n";
$ php staticvar.php
0
1
2
3
4
5