ऐसा लगता है कि किसी ने भी अब तक उल्लेख नहीं किया है, एक ही वर्ग के विभिन्न उदाहरणों के अंदर स्थिर चर उनके राज्य बने हुए हैं। इसलिए OOP कोड लिखते समय सावधान रहें।
इस पर विचार करो:
class Foo
{
public function call()
{
static $test = 0;
$test++;
echo $test . PHP_EOL;
}
}
$a = new Foo();
$a->call(); // 1
$a->call(); // 2
$a->call(); // 3
$b = new Foo();
$b->call(); // 4
$b->call(); // 5
यदि आप एक स्थिर वैरिएबल को केवल वर्तमान श्रेणी के उदाहरण के लिए अपने राज्य को याद रखना चाहते हैं, तो आप इस तरह एक वर्ग की संपत्ति से चिपके रहेंगे:
class Bar
{
private $test = 0;
public function call()
{
$this->test++;
echo $this->test . PHP_EOL;
}
}
$a = new Bar();
$a->call(); // 1
$a->call(); // 2
$a->call(); // 3
$b = new Bar();
$b->call(); // 1
$b->call(); // 2