ReflectionClass_getInterfaces_001.phpt 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. --TEST--
  2. ReflectionClass::getInterfaces()
  3. --CREDITS--
  4. Robin Fernandes <robinf@php.net>
  5. Steve Seear <stevseea@php.net>
  6. --FILE--
  7. <?php
  8. class A0 {}
  9. class B0 extends A0 {}
  10. abstract class A1 {}
  11. class B1 extends A1 {}
  12. interface I0 {}
  13. interface I1 {}
  14. interface I2 {}
  15. interface I3 {}
  16. interface I4 extends I3 {}
  17. interface I5 extends I4 {}
  18. interface I6 extends I5, I1, I2 {}
  19. interface I7 extends I6 {}
  20. class C0 implements I0 {}
  21. class C1 implements I1, I3 {}
  22. class C2 extends C1 {}
  23. class C3 extends C2 implements I1 {}
  24. class C4 extends C3 implements I2 {}
  25. class C5 extends C4 implements I7 {}
  26. class C6 implements I1, I2, I3, I4, I5, I6, I7 {}
  27. $classes = array( 'A0', 'A1', 'B0', 'B1',
  28. 'I0', 'I1', 'I2', 'I3', 'I4', 'I5', 'I6', 'I7',
  29. 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6' );
  30. foreach ($classes as $class) {
  31. echo "---( Interfaces implemented by $class )---\n ";
  32. $rc = new ReflectionClass($class);
  33. $interfaces = $rc->getInterfaces();
  34. // Sort interfaces so that tests do not fail because of wrong order.
  35. ksort($interfaces);
  36. print_r($interfaces);
  37. }
  38. ?>
  39. --EXPECT--
  40. ---( Interfaces implemented by A0 )---
  41. Array
  42. (
  43. )
  44. ---( Interfaces implemented by A1 )---
  45. Array
  46. (
  47. )
  48. ---( Interfaces implemented by B0 )---
  49. Array
  50. (
  51. )
  52. ---( Interfaces implemented by B1 )---
  53. Array
  54. (
  55. )
  56. ---( Interfaces implemented by I0 )---
  57. Array
  58. (
  59. )
  60. ---( Interfaces implemented by I1 )---
  61. Array
  62. (
  63. )
  64. ---( Interfaces implemented by I2 )---
  65. Array
  66. (
  67. )
  68. ---( Interfaces implemented by I3 )---
  69. Array
  70. (
  71. )
  72. ---( Interfaces implemented by I4 )---
  73. Array
  74. (
  75. [I3] => ReflectionClass Object
  76. (
  77. [name] => I3
  78. )
  79. )
  80. ---( Interfaces implemented by I5 )---
  81. Array
  82. (
  83. [I3] => ReflectionClass Object
  84. (
  85. [name] => I3
  86. )
  87. [I4] => ReflectionClass Object
  88. (
  89. [name] => I4
  90. )
  91. )
  92. ---( Interfaces implemented by I6 )---
  93. Array
  94. (
  95. [I1] => ReflectionClass Object
  96. (
  97. [name] => I1
  98. )
  99. [I2] => ReflectionClass Object
  100. (
  101. [name] => I2
  102. )
  103. [I3] => ReflectionClass Object
  104. (
  105. [name] => I3
  106. )
  107. [I4] => ReflectionClass Object
  108. (
  109. [name] => I4
  110. )
  111. [I5] => ReflectionClass Object
  112. (
  113. [name] => I5
  114. )
  115. )
  116. ---( Interfaces implemented by I7 )---
  117. Array
  118. (
  119. [I1] => ReflectionClass Object
  120. (
  121. [name] => I1
  122. )
  123. [I2] => ReflectionClass Object
  124. (
  125. [name] => I2
  126. )
  127. [I3] => ReflectionClass Object
  128. (
  129. [name] => I3
  130. )
  131. [I4] => ReflectionClass Object
  132. (
  133. [name] => I4
  134. )
  135. [I5] => ReflectionClass Object
  136. (
  137. [name] => I5
  138. )
  139. [I6] => ReflectionClass Object
  140. (
  141. [name] => I6
  142. )
  143. )
  144. ---( Interfaces implemented by C0 )---
  145. Array
  146. (
  147. [I0] => ReflectionClass Object
  148. (
  149. [name] => I0
  150. )
  151. )
  152. ---( Interfaces implemented by C1 )---
  153. Array
  154. (
  155. [I1] => ReflectionClass Object
  156. (
  157. [name] => I1
  158. )
  159. [I3] => ReflectionClass Object
  160. (
  161. [name] => I3
  162. )
  163. )
  164. ---( Interfaces implemented by C2 )---
  165. Array
  166. (
  167. [I1] => ReflectionClass Object
  168. (
  169. [name] => I1
  170. )
  171. [I3] => ReflectionClass Object
  172. (
  173. [name] => I3
  174. )
  175. )
  176. ---( Interfaces implemented by C3 )---
  177. Array
  178. (
  179. [I1] => ReflectionClass Object
  180. (
  181. [name] => I1
  182. )
  183. [I3] => ReflectionClass Object
  184. (
  185. [name] => I3
  186. )
  187. )
  188. ---( Interfaces implemented by C4 )---
  189. Array
  190. (
  191. [I1] => ReflectionClass Object
  192. (
  193. [name] => I1
  194. )
  195. [I2] => ReflectionClass Object
  196. (
  197. [name] => I2
  198. )
  199. [I3] => ReflectionClass Object
  200. (
  201. [name] => I3
  202. )
  203. )
  204. ---( Interfaces implemented by C5 )---
  205. Array
  206. (
  207. [I1] => ReflectionClass Object
  208. (
  209. [name] => I1
  210. )
  211. [I2] => ReflectionClass Object
  212. (
  213. [name] => I2
  214. )
  215. [I3] => ReflectionClass Object
  216. (
  217. [name] => I3
  218. )
  219. [I4] => ReflectionClass Object
  220. (
  221. [name] => I4
  222. )
  223. [I5] => ReflectionClass Object
  224. (
  225. [name] => I5
  226. )
  227. [I6] => ReflectionClass Object
  228. (
  229. [name] => I6
  230. )
  231. [I7] => ReflectionClass Object
  232. (
  233. [name] => I7
  234. )
  235. )
  236. ---( Interfaces implemented by C6 )---
  237. Array
  238. (
  239. [I1] => ReflectionClass Object
  240. (
  241. [name] => I1
  242. )
  243. [I2] => ReflectionClass Object
  244. (
  245. [name] => I2
  246. )
  247. [I3] => ReflectionClass Object
  248. (
  249. [name] => I3
  250. )
  251. [I4] => ReflectionClass Object
  252. (
  253. [name] => I4
  254. )
  255. [I5] => ReflectionClass Object
  256. (
  257. [name] => I5
  258. )
  259. [I6] => ReflectionClass Object
  260. (
  261. [name] => I6
  262. )
  263. [I7] => ReflectionClass Object
  264. (
  265. [name] => I7
  266. )
  267. )