#43973 [Opn]: __autoload called with wrong classname when triggered by static callback
ID: 43973
Updated by: felipe@php.net
Reported By: robin_fernandes at uk dot ibm dot com
Status: Open
Bug Type: Class/Object related
PHP Version: 6CVS-2008-01-29 (snap)
New Comment:
Simple fix:
http://ecl.zoone.com.br/etc/patches/bug43973.diff
Previous Comments:
------------------------------------------------------------------------
[2008-01-29 18:28:39] robin_fernandes at uk dot ibm dot com
Description:
------------
NB: This issue is specific to PHP6 snaps. PHP5.2 and PHP5.3 snaps
produce the expected output.
When using a callback of the form 'C::f' where class C is not yet
defined, __autoload() is invoked with the fully qualified method name as
an argument, rather than just the class name.
Reproduce code:
---------------
<?php
function __autoload($name) {
echo "Autoload class: $name\n";
if ($name == 'C') {
class C { static function f() { echo "In C::f()\n"; } }
}
}
call_user_func('C::f');
?>
Expected result:
----------------
Autoload class: C
In C::f()
Actual result:
--------------
Autoload class: C::f
Warning: call_user_func() expects parameter 1 to be valid callback,
string given in %s on line 9
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=43973&edit=1
Thread (3 messages)