ID: 39713 Updated by: [EMAIL PROTECTED] Reported By: paul at digitalbacon dot us -Status: Open +Status: Bogus Bug Type: Scripting Engine problem Operating System: Linux, Mac OS X 10.4, Windows XP PHP Version: 5.2.0 New Comment:
Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php Previous Comments: ------------------------------------------------------------------------ [2006-12-02 04:24:04] paul at digitalbacon dot us Description: ------------ When using a static variable defined inside a parent class's static method block, different outcomes can occur depending on the scope name used when calling. The effect is that a non-overridden method in the child class is allocated a completely separate static variable... not how it works in C or C++, which I know PHP is not. I encountered this problem implementing a singleton pattern in a parent class. I apologize for the reproduction code, but it does illustrate my perceived problem. The closest bugs I found, relate to static class attributes, not regular static variables. Reproduce code: --------------- <?php class TheParent { public static function staticMethod() { static $theStaticValue = true; if ($theStaticValue == true) { $theStaticValue = false; return true; } else return $theStaticValue; // false } } class TheChild extends TheParent {} $a1 = TheParent::staticMethod(); $a2 = TheParent::staticMethod(); $b1 = TheChild::staticMethod(); $b2 = TheChild::staticMethod(); echo '$a1: ', $a1, "\n"; // true echo '$a2: ', $a2, "\n"; // false echo '$b1: ', $b1, "\n"; // true (I believe this should be false) echo '$b2: ', $b2, "\n"; // false ?> Expected result: ---------------- My intuition tells me that the parent's static variable should be used regardless of the scope name used... unless it's actually redefined in the child class. In this example, I expect the output to be: $a1: 1 $a2: $b1: $b2: Is local static method data not shared? Actual result: -------------- $a1: 1 $a2: $b1: 1 $b2: ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=39713&edit=1