From:             doctorrock83 at gmail dot com
Operating system: Linux
PHP version:      5.2.10
PHP Bug Type:     Scripting Engine problem
Bug description:  call_user_func_array modifies internal object context for 
custom error handler

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 bug report at http://bugs.php.net/?id=49090&edit=1
-- 
Try a snapshot (PHP 5.2):            
http://bugs.php.net/fix.php?id=49090&r=trysnapshot52
Try a snapshot (PHP 5.3):            
http://bugs.php.net/fix.php?id=49090&r=trysnapshot53
Try a snapshot (PHP 6.0):            
http://bugs.php.net/fix.php?id=49090&r=trysnapshot60
Fixed in SVN:                        
http://bugs.php.net/fix.php?id=49090&r=fixed
Fixed in SVN and need be documented: 
http://bugs.php.net/fix.php?id=49090&r=needdocs
Fixed in release:                    
http://bugs.php.net/fix.php?id=49090&r=alreadyfixed
Need backtrace:                      
http://bugs.php.net/fix.php?id=49090&r=needtrace
Need Reproduce Script:               
http://bugs.php.net/fix.php?id=49090&r=needscript
Try newer version:                   
http://bugs.php.net/fix.php?id=49090&r=oldversion
Not developer issue:                 
http://bugs.php.net/fix.php?id=49090&r=support
Expected behavior:                   
http://bugs.php.net/fix.php?id=49090&r=notwrong
Not enough info:                     
http://bugs.php.net/fix.php?id=49090&r=notenoughinfo
Submitted twice:                     
http://bugs.php.net/fix.php?id=49090&r=submittedtwice
register_globals:                    
http://bugs.php.net/fix.php?id=49090&r=globals
PHP 4 support discontinued:          http://bugs.php.net/fix.php?id=49090&r=php4
Daylight Savings:                    http://bugs.php.net/fix.php?id=49090&r=dst
IIS Stability:                       
http://bugs.php.net/fix.php?id=49090&r=isapi
Install GNU Sed:                     
http://bugs.php.net/fix.php?id=49090&r=gnused
Floating point limitations:          
http://bugs.php.net/fix.php?id=49090&r=float
No Zend Extensions:                  
http://bugs.php.net/fix.php?id=49090&r=nozend
MySQL Configuration Error:           
http://bugs.php.net/fix.php?id=49090&r=mysqlcfg

Reply via email to