interface_doubled.phpt 3.6 KB

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