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--EXPECT-- 34object(A)#2 (0) { 35} 36object(X)#2 (0) { 37} 38object(Y)#2 (0) { 39} 40object(B)#2 (0) { 41} 42object(B)#2 (0) { 43} 44