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