1--TEST-- 2Inheritance failure because Y inherits from wrong class 3--FILE-- 4<?php 5 6spl_autoload_register(function ($class) { 7 if ($class == 'A') { 8 class A 9 { 10 function m(): B {} 11 function m2(): B {} 12 } 13 var_dump(new A); 14 } elseif ($class == 'B') { 15 class B extends A 16 { 17 function m(): X {} 18 function m2(): Y {} 19 } 20 var_dump(new B); 21 } elseif ($class == 'X') { 22 class X extends B {} 23 var_dump(new X); 24 } else { 25 class Y extends A {} 26 var_dump(new Y); 27 } 28}); 29 30new B; 31 32?> 33--EXPECTF-- 34object(A)#2 (0) { 35} 36object(Y)#2 (0) { 37} 38 39Fatal error: Declaration of B::m2(): Y must be compatible with A::m2(): B in %s on line %d 40