mirror of
https://github.com/php/php-src.git
synced 2026-03-26 17:22:15 +01:00
This implements a reduced variant of #1226 with just the following change: -Fatal error: Uncaught exception 'EngineException' with message 'Call to private method foo::bar() from context ''' in %s:%d +Fatal error: Uncaught EngineException: Call to private method foo::bar() from context '' in %s:%d The '' wrapper around messages is very weird if the exception message itself contains ''. Futhermore having the message wrapped in '' doesn't work for the "and defined" suffix of TypeExceptions.
43 lines
1016 B
PHP
43 lines
1016 B
PHP
--TEST--
|
|
SPL: RecursiveIteratorIterator - Exception thrown in endchildren which should be handled in next()
|
|
--FILE--
|
|
<?php
|
|
|
|
$arr = array(array(1,2));
|
|
$arrOb = new ArrayObject($arr);
|
|
|
|
$recArrIt = new RecursiveArrayIterator($arrOb->getIterator());
|
|
|
|
class MyRecursiveIteratorIterator extends RecursiveIteratorIterator {
|
|
|
|
function endchildren() {
|
|
throw new Exception;
|
|
}
|
|
}
|
|
|
|
|
|
$recItIt = new MyRecursiveIteratorIterator($recArrIt, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD);
|
|
|
|
foreach ($recItIt as $val) echo "$val\n";
|
|
|
|
$recItIt2 = new MyRecursiveIteratorIterator($recArrIt, RecursiveIteratorIterator::LEAVES_ONLY);
|
|
|
|
echo "===NEXT LOOP===\n";
|
|
|
|
foreach ($recItIt2 as $val) echo "$val\n";
|
|
|
|
?>
|
|
--EXPECTF--
|
|
1
|
|
2
|
|
===NEXT LOOP===
|
|
1
|
|
2
|
|
|
|
Fatal error: Uncaught Exception in %s
|
|
Stack trace:
|
|
#0 [internal function]: MyRecursiveIteratorIterator->endchildren()
|
|
#1 %s: RecursiveIteratorIterator->next()
|
|
#2 {main}
|
|
thrown in %s on line %d
|