php-src/ext/spl/tests/spl_autoload_012.phpt
Nikita Popov 3ae995f03c Tweak uncaught exception message display
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.
2015-05-17 18:47:06 +02:00

66 lines
1.4 KiB
PHP

--TEST--
SPL: spl_autoload() capturing multiple Exceptions in __autoload
--FILE--
<?php
function autoload_first($name)
{
echo __METHOD__ . "\n";
throw new Exception('first');
}
function autoload_second($name)
{
echo __METHOD__ . "\n";
throw new Exception('second');
}
spl_autoload_register('autoload_first');
spl_autoload_register('autoload_second');
try {
class_exists('ThisClassDoesNotExist');
} catch(Exception $e) {
do {
echo $e->getMessage()."\n";
} while($e = $e->getPrevious());
}
try {
new ThisClassDoesNotExist;
} catch(Exception $e) {
do {
echo $e->getMessage()."\n";
} while($e = $e->getPrevious());
}
class_exists('ThisClassDoesNotExist');
?>
===DONE===
--EXPECTF--
autoload_first
autoload_second
second
first
autoload_first
autoload_second
second
first
autoload_first
autoload_second
Fatal error: Uncaught Exception: first in %sspl_autoload_012.php:%d
Stack trace:
#0 [internal function]: autoload_first('ThisClassDoesNo...')
#1 [internal function]: spl_autoload_call('ThisClassDoesNo...')
#2 %sspl_autoload_012.php(%d): class_exists('ThisClassDoesNo...')
#3 {main}
Next Exception: second in %sspl_autoload_012.php:%d
Stack trace:
#0 [internal function]: autoload_second('ThisClassDoesNo...')
#1 [internal function]: spl_autoload_call('ThisClassDoesNo...')
#2 %sspl_autoload_012.php(%d): class_exists('ThisClassDoesNo...')
#3 {main}
thrown in %sspl_autoload_012.php on line %d