1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- --TEST--
- Bug #31102 (Exception not handled when thrown inside autoloader)
- --FILE--
- <?php
- $test = 0;
- spl_autoload_register(function ($class) {
- global $test;
- echo __METHOD__ . "($class,$test)\n";
- switch($test)
- {
- case 1:
- eval("class $class { function __construct(){throw new Exception('$class::__construct');}}");
- return;
- case 2:
- eval("class $class { function __construct(){throw new Exception('$class::__construct');}}");
- throw new Exception(__METHOD__);
- return;
- case 3:
- return;
- }
- });
- while($test++ < 5)
- {
- try
- {
- eval("\$bug = new Test$test();");
- }
- catch (Exception $e)
- {
- echo "Caught: " . $e->getMessage() . "\n";
- }
- }
- ?>
- ===DONE===
- --EXPECTF--
- {closure}(Test1,1)
- Caught: Test1::__construct
- {closure}(Test2,2)
- Caught: {closure}
- {closure}(Test3,3)
- Fatal error: Uncaught Error: Class "Test3" not found in %s:%d
- Stack trace:
- #0 %s(%d): eval()
- #1 {main}
- thrown in %sbug31102.php(%d) : eval()'d code on line 1
|