1--TEST-- 2Class order allowed with autoloading (3) 3--FILE-- 4<?php 5 6spl_autoload_register(function($class) { 7 if ($class == 'A') { 8 class A { 9 public function method(): X {} 10 } 11 var_dump(new A); 12 } else if ($class == 'B') { 13 class B extends A { 14 public function method(): Y {} 15 } 16 var_dump(new B); 17 } else if ($class == 'X') { 18 class X { 19 public function method(): A {} 20 } 21 var_dump(new X); 22 } else if ($class == 'Y') { 23 class Y extends X { 24 public function method(): B {} 25 } 26 var_dump(new Y); 27 } 28}); 29 30var_dump(new B); 31 32?> 33===DONE=== 34--EXPECT-- 35object(A)#2 (0) { 36} 37object(X)#2 (0) { 38} 39object(Y)#2 (0) { 40} 41object(B)#2 (0) { 42} 43object(B)#2 (0) { 44} 45===DONE=== 46