123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- --TEST--
- Bug #31102 (Exception not handled when thrown inside __autoload())
- --FILE--
- <?php
- $test = 0;
- function __autoload($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===
- <?php exit(0); ?>
- --EXPECTF--
- __autoload(Test1,1)
- Caught: Test1::__construct
- __autoload(Test2,2)
- Caught: __autoload
- __autoload(Test3,3)
- Fatal error: Class 'Test3' not found in %sbug31102.php(%d) : eval()'d code on line 1
|