ID: 47384 User updated by: alreece45 at gmail dot com -Summary: self and parent aren't using the class where defined Reported By: alreece45 at gmail dot com Status: Open -Bug Type: Documentation problem +Bug Type: Scripting Engine problem Operating System: Linux/Windows -PHP Version: Irrelevant +PHP Version: PHP5/PHP6 New Comment:
Perhaps this is not a Documentation Problem, but a scripting problem? I set it as documentation because I wasn't sure if this behavior was intentional or not. If it was intentional, the documentation needed to be updated because it currently says: "Static references to the current class like self:: or __CLASS__ are resolved using the class in which the function belongs, as in where it was defined" I'd appreciate it to know, at the very least, if this behavior is intentional or not for two reasons: 1) Avoid using the "feature" in PHP projects. 2) So I know if I take the time to try make a patch: I know I didn't just waste my time (even if I fail). also: updating the summary to be more clear (hopefully) Previous Comments: ------------------------------------------------------------------------ [2009-02-13 22:55:01] alreece45 at gmail dot com Description: ------------ When defining properties using constants with parent or self, they are resolved using computed classes instead of defined classes. This behavior appears to have existed since PHP 5.0.5 and still exists in PHP 5.3beta3, a 5.3 CVS snapshot (200902122000), and 5.2 CVS snapshot (200902121200). Someone has brought this up before in php-internals: http://marc.info/?l=php-internals&m=118839969729862&w=2 Reproduce code: --------------- <?php class Father { const my_name = 'Father'; public $name = self::my_name; } class Son extends Father { const my_name = 'Son'; public $daddy = parent::my_name; } class GrandSon extends Son { const my_name = 'Grandchild'; } $older = new GrandSon; echo "{$older->name}\n"; echo "{$older->daddy}\n"; ?> Expected result: ---------------- Father Father Actual result: -------------- Grandchild Son ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=47384&edit=1