1--TEST-- 2Class order allowed with autoloading (5) 3--FILE-- 4<?php 5 6// Similar to variance3, but one more class hierarchy in the cycle 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 class X { 20 public function method(): Q {} 21 } 22 var_dump(new X); 23 } else if ($class == 'Y') { 24 class Y extends X { 25 public function method(): R {} 26 } 27 var_dump(new Y); 28 } else if ($class == 'Q') { 29 class Q { 30 public function method(): A {} 31 } 32 var_dump(new Q); 33 } else if ($class == 'R') { 34 class R extends Q { 35 public function method(): B {} 36 } 37 var_dump(new R); 38 } 39}); 40 41var_dump(new B); 42 43?> 44--EXPECT-- 45object(A)#2 (0) { 46} 47object(X)#2 (0) { 48} 49object(Q)#2 (0) { 50} 51object(R)#2 (0) { 52} 53object(Y)#2 (0) { 54} 55object(B)#2 (0) { 56} 57object(B)#2 (0) { 58} 59