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