interface_doubled.phpt 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. --TEST--
  2. ZE2 An interface extends base interfaces
  3. --FILE--
  4. <?php
  5. interface if_a {
  6. function f_a();
  7. }
  8. interface if_b {
  9. function f_b();
  10. }
  11. interface if_c extends if_a, if_b {
  12. function f_c();
  13. }
  14. interface if_d extends if_a, if_b {
  15. function f_d();
  16. }
  17. interface if_e {
  18. function f_d();
  19. }
  20. interface if_f extends /*if_e,*/ if_a, if_b, if_c, if_d /*, if_e*/ {
  21. }
  22. class base {
  23. function test($class) {
  24. echo "is_a(" . get_class($this) . ", $class) ". (($this instanceof $class) ? "yes\n" : "no\n");
  25. }
  26. }
  27. echo "class_a\n";
  28. class class_a extends base implements if_a {
  29. function f_a() {}
  30. function f_b() {}
  31. function f_c() {}
  32. function f_d() {}
  33. function f_e() {}
  34. }
  35. $t = new class_a();
  36. echo $t->test('if_a');
  37. echo $t->test('if_b');
  38. echo $t->test('if_c');
  39. echo $t->test('if_d');
  40. echo $t->test('if_e');
  41. echo "class_b\n";
  42. class class_b extends base implements if_a, if_b {
  43. function f_a() {}
  44. function f_b() {}
  45. function f_c() {}
  46. function f_d() {}
  47. function f_e() {}
  48. }
  49. $t = new class_b();
  50. echo $t->test('if_a');
  51. echo $t->test('if_b');
  52. echo $t->test('if_c');
  53. echo $t->test('if_d');
  54. echo $t->test('if_e');
  55. echo "class_c\n";
  56. class class_c extends base implements if_c {
  57. function f_a() {}
  58. function f_b() {}
  59. function f_c() {}
  60. function f_d() {}
  61. function f_e() {}
  62. }
  63. $t = new class_c();
  64. echo $t->test('if_a');
  65. echo $t->test('if_b');
  66. echo $t->test('if_c');
  67. echo $t->test('if_d');
  68. echo $t->test('if_e');
  69. echo "class_d\n";
  70. class class_d extends base implements if_d{
  71. function f_a() {}
  72. function f_b() {}
  73. function f_c() {}
  74. function f_d() {}
  75. function f_e() {}
  76. }
  77. $t = new class_d();
  78. echo $t->test('if_a');
  79. echo $t->test('if_b');
  80. echo $t->test('if_c');
  81. echo $t->test('if_d');
  82. echo $t->test('if_e');
  83. echo "class_e\n";
  84. class class_e extends base implements if_a, if_b, if_c, if_d {
  85. function f_a() {}
  86. function f_b() {}
  87. function f_c() {}
  88. function f_d() {}
  89. function f_e() {}
  90. }
  91. $t = new class_e();
  92. echo $t->test('if_a');
  93. echo $t->test('if_b');
  94. echo $t->test('if_c');
  95. echo $t->test('if_d');
  96. echo $t->test('if_e');
  97. echo "class_f\n";
  98. class class_f extends base implements if_e {
  99. function f_a() {}
  100. function f_b() {}
  101. function f_c() {}
  102. function f_d() {}
  103. function f_e() {}
  104. }
  105. $t = new class_f();
  106. echo $t->test('if_a');
  107. echo $t->test('if_b');
  108. echo $t->test('if_c');
  109. echo $t->test('if_d');
  110. echo $t->test('if_e');
  111. echo "class_g\n";
  112. class class_g extends base implements if_f {
  113. function f_a() {}
  114. function f_b() {}
  115. function f_c() {}
  116. function f_d() {}
  117. function f_e() {}
  118. }
  119. $t = new class_g();
  120. echo $t->test('if_a');
  121. echo $t->test('if_b');
  122. echo $t->test('if_c');
  123. echo $t->test('if_d');
  124. echo $t->test('if_e');
  125. ?>
  126. --EXPECT--
  127. class_a
  128. is_a(class_a, if_a) yes
  129. is_a(class_a, if_b) no
  130. is_a(class_a, if_c) no
  131. is_a(class_a, if_d) no
  132. is_a(class_a, if_e) no
  133. class_b
  134. is_a(class_b, if_a) yes
  135. is_a(class_b, if_b) yes
  136. is_a(class_b, if_c) no
  137. is_a(class_b, if_d) no
  138. is_a(class_b, if_e) no
  139. class_c
  140. is_a(class_c, if_a) yes
  141. is_a(class_c, if_b) yes
  142. is_a(class_c, if_c) yes
  143. is_a(class_c, if_d) no
  144. is_a(class_c, if_e) no
  145. class_d
  146. is_a(class_d, if_a) yes
  147. is_a(class_d, if_b) yes
  148. is_a(class_d, if_c) no
  149. is_a(class_d, if_d) yes
  150. is_a(class_d, if_e) no
  151. class_e
  152. is_a(class_e, if_a) yes
  153. is_a(class_e, if_b) yes
  154. is_a(class_e, if_c) yes
  155. is_a(class_e, if_d) yes
  156. is_a(class_e, if_e) no
  157. class_f
  158. is_a(class_f, if_a) no
  159. is_a(class_f, if_b) no
  160. is_a(class_f, if_c) no
  161. is_a(class_f, if_d) no
  162. is_a(class_f, if_e) yes
  163. class_g
  164. is_a(class_g, if_a) yes
  165. is_a(class_g, if_b) yes
  166. is_a(class_g, if_c) yes
  167. is_a(class_g, if_d) yes
  168. is_a(class_g, if_e) no