Ben örnekleri arasında paylaşılan nesne yöntemleri içinde tanımlanmış statik değişkenler ile bazı beklenmeyen davranış geldim. Bu muhtemelen bilinen davranıştır, ama ben PHP belgelerine göz gibi nesne yöntemleri içinde statik olarak tanımlanan değişkenler örneklerini bulamıyorum.
İşte ben geldim davranış bir azalma olduğunu:
<?php
class Foo {
public function dofoo() {
static $i = 0;
echo $i++ . '<br>';
}
}
$f = new Foo;
$g = new Foo;
$f->dofoo(); // expected 0, got 0
$f->dofoo(); // expected 1, got 1
$f->dofoo(); // expected 2, got 2
$g->dofoo(); // expected 0, got 3
$g->dofoo(); // expected 1, got 4
$g->dofoo(); // expected 2, got 5
Şimdi, $i statik olması per instance umuyordum, ama gerçekte $i örnekleri arasında paylaşılır. Kendi merakım için, kimse bu durumda neden ayrıntılı olabilir ve nerede php.net belgelenmiştir oluyor?