Edit report at https://bugs.php.net/bug.php?id=54054&edit=1
ID: 54054 Comment by: phil at propcom dot co dot uk Reported by: morpika at vipmail dot hu Summary: Autoload not called in user-defined error handler function in case of E_STRICT Status: Open Type: Bug Package: *Programming Data Structures Operating System: FreeBSD 8.0 PHP Version: 5.3.5 Block user comment: N Private report: N New Comment: This is still an issue. The 2 test cases below should hopefully sum this up for you. Case 1... include() call fails and generates an E_WARNING E_WARNING is caught by the error handler Error handler attempts to use \Error class and calls the autoloader because it is not currently loaded ...Case 2 The included file (http://codepad.viper-7.com/xyCn8C) generates an E_STRICT E_STRICT is caught by the error handler Error handler attempts to use \Error class and fails with a fatal error WITHOUT calling the autoloader The problem is that, in case 2, it is expected that the autoloader would be used to load the \Error class. This doesn't appear to be the case. Case 1: http://codepad.viper-7.com/b065B1 Case 2: http://codepad.viper-7.com/qi5185 Included file (xyCn8C) in Case 2: http://codepad.viper-7.com/xyCn8C Previous Comments: ------------------------------------------------------------------------ [2011-02-19 14:39:37] morpika at vipmail dot hu Description: ------------ __autoload function is not called in user-defined error handler function in case of E_STRICT error. In case of any other type of errors (thet user-defined error handler function can handle) the autoload function is called properly. Test script: --------------- test.php: <?php set_error_handler('php_error'); function php_error($errno, $errcode) { t_class::t_function($errno, $errcode); } function __autoload($class_name) { echo 'autoload called'; exit; } require('nf.php'); ?> nf.php (to create an E_STRICT ERROR: Redefining already defined constructor): <?php class number_format { public function __construct() {} public function number_format($number) { echo number_format($number, 0, '.', '.'); } } ?> Expected result: ---------------- autoload called Actual result: -------------- Fatal error: Class 't_class' not found ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=54054&edit=1