1--TEST-- 2Exception while loading class -- parent case 3--FILE-- 4<?php 5 6spl_autoload_register(function($class) { 7 throw new Exception("Class $class does not exist"); 8}); 9 10// Graceful failure allowed 11for ($i = 0; $i < 2; $i++) { 12 try { 13 class B extends A { 14 } 15 } catch (Exception $e) { 16 echo $e->getMessage(), "\n"; 17 } 18} 19 20interface I {} 21 22spl_autoload_register(function($class) { 23 // Tie up B in a variance obligation. 24 class X { 25 public function test(): I {} 26 } 27 class Y extends X { 28 public function test(): B {} 29 } 30}, true, true); 31 32// Fallback to fatal error, as we can't unlink class B anymore. 33try { 34 class B extends A implements I { 35 } 36} catch (Exception $e) { 37 echo $e->getMessage(), "\n"; 38} 39 40?> 41--EXPECTF-- 42Class A does not exist 43Class A does not exist 44 45Fatal error: During inheritance of B with variance dependencies: Uncaught Exception: Class A does not exist in %s:%d 46Stack trace: 47#0 %s(%d): {closure}('A') 48#1 {main} in %s on line %d 49