#34421 [Bgs->Opn]: get_class and debug_backtrace report wrong class for inherited static methods

From: Date: Thu, 08 Sep 2005 14:06:20 +0000
Subject: #34421 [Bgs->Opn]: get_class and debug_backtrace report wrong class for inherited static methods
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-84730@lists.php.net to get a copy of this message
ID: 34421 User updated by: wkonkel at gmail dot com Reported By: wkonkel at gmail dot com -Status: Bogus +Status: Open Bug Type: Class/Object related Operating System: redhat PHP Version: 5.0.5 New Comment: Although this is how it currently does work, this is not logical. If I specify that the scope to be "extendedBaseClass", then why is the scope "baseClass"? If this was not a static method, calling get_class() would return "extendedBaseClass" because the object simply isn't a "baseClass", it's an "extendedBaseClass". Static methods are no different. Previous Comments: ------------------------------------------------------------------------ [2005-09-08 12:46:35] johannes@php.net 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 The static method is part of the base class, not of the extended. ------------------------------------------------------------------------ [2005-09-08 09:36:40] wkonkel at gmail dot com fixed typo in summary ------------------------------------------------------------------------ [2005-09-08 09:34:30] wkonkel at gmail dot com Description: ------------ When a static function is called in the scope of an extended class, the static function still thinks it's being called in the scope of the base class. I found a similar bug at http://bugs.php.net/bug.php?id=30828 which was fixed in 5.0.5, but the problem still remains. Reproduce code: --------------- <? class baseClass { static function do_get_class() { return get_class(); } static function do_backtrace() { $backtrace = debug_backtrace(); return $backtrace[0]['class']; } } class extendedBaseClass extends baseClass { } echo extendedBaseClass::do_get_class() . "<br>"; echo extendedBaseClass::do_backtrace() . "<br>"; ?> Expected result: ---------------- extendedBaseClass extendedBaseClass Actual result: -------------- baseClass baseClass ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=34421&edit=1

« previous php.bugs (#84730) next »