|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2007-12-12 10:36 UTC] tony2001@php.net
[2007-12-12 17:42 UTC] colder@php.net
[2007-12-12 17:46 UTC] bate@php.net
[2008-04-07 11:03 UTC] colder@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Nov 20 10:00:01 2025 UTC |
Description: ------------ The Function get_called_class works not as expected. the new introduced static call works correct, the self call too but if you call the demo class with parent you dont get foo as result. This should be so because its not possible to overwrite a existing class in a static class with late static binding. get_called_class() should return in every call 'foo' and not as shown with parent::demo() a 'bar' Reproduce code: --------------- <?php abstract class bar { public static function demo() { var_dump(get_called_class()); } } class foo extends bar { public static function parent_demo() { parent::demo(); } public static function self_demo() { self::demo(); } public static function static_demo() { static::demo(); } } echo 'bar::demo()' . PHP_EOL; bar::demo(); echo 'foo::demo()' . PHP_EOL; foo::demo(); echo 'foo::parent_demo()' . PHP_EOL; foo::parent_demo(); echo 'foo::self_demo()' . PHP_EOL; foo::self_demo(); echo 'foo::static_demo()' . PHP_EOL; foo::static_demo(); ?> Expected result: ---------------- bar::demo() string(3) "bar" foo::demo() string(3) "foo" foo::parent_demo() string(3) "bar" foo::self_demo() string(3) "foo" foo::static_demo() string(3) "foo" Actual result: -------------- bar::demo() string(3) "bar" foo::demo() string(3) "foo" foo::parent_demo() string(3) "foo" foo::self_demo() string(3) "foo" foo::static_demo() string(3) "foo"