php-src/Zend/tests/use_unlinked_class.phpt
Nikita Popov 4b9ebd837b Allow throwing exception while loading parent class
This is a fix for symfony/symfony#32995.

The behavior is:

* Throwing exception when loading parent/interface is allowed
  (and we will also throw one if the class is simply not found).
* If this happens, the bucket key for the class is reset, so
  it's possibly to try registering the same class again.
* However, if the class has already been used due to a variance
  obligation, the exception is upgraded to a fatal error, as we
  cannot safely unregister the class stub anymore.
2019-09-12 16:41:18 +02:00

22 lines
452 B
PHP

--TEST--
Classes can only be used once they are fully linked
--FILE--
<?php
spl_autoload_register(function($class) {
echo new ReflectionClass(A::class), "\n";
});
class A implements I {
}
?>
--EXPECTF--
Fatal error: Uncaught ReflectionException: Class A does not exist in %s:%d
Stack trace:
#0 %s(%d): ReflectionClass->__construct('A')
#1 [internal function]: {closure}('I')
#2 %s(%d): spl_autoload_call('I')
#3 {main}
thrown in %s on line %d