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