ReflectionObject_isSubclassOf_basic.phpt 4.3 KB

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