ID: 49090
Updated by: [email protected]
Reported By: doctorrock83 at gmail dot com
-Status: Open
+Status: Feedback
Bug Type: Scripting Engine problem
Operating System: Linux
PHP Version: 5.2.10
New Comment:
That's quite expected output. What exactly are you saying the bug is?
Previous Comments:
------------------------------------------------------------------------
[2009-07-28 17:30:21] doctorrock83 at gmail dot com
Description:
------------
call_user_func_array() seems to modifies the internal object context
while used with set_error_handler();
See the reproduce code.
Note: In the reproduce code, when not using call_user_func_array()
(direct function call), there is no problem and the expected behavior
occurs.
Reproduce code:
---------------
<?php
class Foo
{
public function call()
{
set_error_handler(array($this, '_errors'));
$result = call_user_func_array('ucfirst', array());
}
protected function _errors($errno, $errstr)
{
throw new Exception($errstr);
}
}
$f = new Foo;
$f->call();
Expected result:
----------------
Exception thrown with the message telling that ucfirst accept one
parameter, none given
Actual result:
--------------
Fatal error: Call to protected method Foo::_errors() from context '' in
/path/to/script.php on line XXX
PHP 5.3.0 returns :
Warning: Invalid callback Foo::_errors, cannot access protected method
Foo::_errors() in /path/to/script.php on line XXX
Warning: ucfirst() expects exactly 1 parameter, 0 given in
/path/to/script.php on line XXX
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=49090&edit=1