1--TEST-- 2ReflectionObject::isSubclassOf() - basic function test 3--FILE-- 4<?php 5class A {} 6class B extends A {} 7class C extends B {} 8 9interface I {} 10class X implements I {} 11 12$classNames = array('A', 'B', 'C', 'I', 'X'); 13 14//Create ReflectionClasses 15foreach ($classNames as $className) { 16 $rcs[$className] = new ReflectionClass($className); 17} 18 19//Create ReflectionObjects 20foreach ($classNames as $className) { 21 if ($rcs[$className]->isInstantiable()) { 22 $ros[$className] = new ReflectionObject(new $className); 23 } 24} 25 26foreach ($ros as $childName => $child) { 27 foreach ($rcs as $parentName => $parent) { 28 echo "Is " . $childName . " a subclass of " . $parentName . "? \n"; 29 echo " - Using ReflectionClass object argument: "; 30 var_dump($child->isSubclassOf($parent)); 31 if ($parent->isInstantiable()) { 32 echo " - Using ReflectionObject object argument: "; 33 var_dump($child->isSubclassOf($ros[$parentName])); 34 } 35 echo " - Using string argument: "; 36 var_dump($child->isSubclassOf($parentName)); 37 } 38} 39?> 40--EXPECT-- 41Is A a subclass of A? 42 - Using ReflectionClass object argument: bool(false) 43 - Using ReflectionObject object argument: bool(false) 44 - Using string argument: bool(false) 45Is A a subclass of B? 46 - Using ReflectionClass object argument: bool(false) 47 - Using ReflectionObject object argument: bool(false) 48 - Using string argument: bool(false) 49Is A a subclass of C? 50 - Using ReflectionClass object argument: bool(false) 51 - Using ReflectionObject object argument: bool(false) 52 - Using string argument: bool(false) 53Is A a subclass of I? 54 - Using ReflectionClass object argument: bool(false) 55 - Using string argument: bool(false) 56Is A a subclass of X? 57 - Using ReflectionClass object argument: bool(false) 58 - Using ReflectionObject object argument: bool(false) 59 - Using string argument: bool(false) 60Is B a subclass of A? 61 - Using ReflectionClass object argument: bool(true) 62 - Using ReflectionObject object argument: bool(true) 63 - Using string argument: bool(true) 64Is B a subclass of B? 65 - Using ReflectionClass object argument: bool(false) 66 - Using ReflectionObject object argument: bool(false) 67 - Using string argument: bool(false) 68Is B a subclass of C? 69 - Using ReflectionClass object argument: bool(false) 70 - Using ReflectionObject object argument: bool(false) 71 - Using string argument: bool(false) 72Is B a subclass of I? 73 - Using ReflectionClass object argument: bool(false) 74 - Using string argument: bool(false) 75Is B a subclass of X? 76 - Using ReflectionClass object argument: bool(false) 77 - Using ReflectionObject object argument: bool(false) 78 - Using string argument: bool(false) 79Is C a subclass of A? 80 - Using ReflectionClass object argument: bool(true) 81 - Using ReflectionObject object argument: bool(true) 82 - Using string argument: bool(true) 83Is C a subclass of B? 84 - Using ReflectionClass object argument: bool(true) 85 - Using ReflectionObject object argument: bool(true) 86 - Using string argument: bool(true) 87Is C a subclass of C? 88 - Using ReflectionClass object argument: bool(false) 89 - Using ReflectionObject object argument: bool(false) 90 - Using string argument: bool(false) 91Is C a subclass of I? 92 - Using ReflectionClass object argument: bool(false) 93 - Using string argument: bool(false) 94Is C a subclass of X? 95 - Using ReflectionClass object argument: bool(false) 96 - Using ReflectionObject object argument: bool(false) 97 - Using string argument: bool(false) 98Is X a subclass of A? 99 - Using ReflectionClass object argument: bool(false) 100 - Using ReflectionObject object argument: bool(false) 101 - Using string argument: bool(false) 102Is X a subclass of B? 103 - Using ReflectionClass object argument: bool(false) 104 - Using ReflectionObject object argument: bool(false) 105 - Using string argument: bool(false) 106Is X a subclass of C? 107 - Using ReflectionClass object argument: bool(false) 108 - Using ReflectionObject object argument: bool(false) 109 - Using string argument: bool(false) 110Is X a subclass of I? 111 - Using ReflectionClass object argument: bool(true) 112 - Using string argument: bool(true) 113Is X a subclass of X? 114 - Using ReflectionClass object argument: bool(false) 115 - Using ReflectionObject object argument: bool(false) 116 - Using string argument: bool(false) 117