Annotation of embedaddon/php/ext/standard/tests/class_object/is_a.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: is_a and is_subclass_of behaviour (with and without autoload)
3: --SKIPIF--
4: <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
5: --FILE--
6: <?php
7:
8: interface if_a {
9: function f_a();
10: }
11:
12: interface if_b extends if_a {
13: function f_b();
14: }
15:
16: class base {
17: function _is_a($sub) {
18:
19: echo "\n>>> With Defined class\n";
20: echo str_pad('is_a( OBJECT:'.get_class($this).', '.$sub.') = ', 60) . (is_a($this, $sub) ? 'yes' : 'no')."\n";
21: echo str_pad('is_a( STRING:'.get_class($this).', '.$sub.') = ', 60). (is_a(get_class($this), $sub) ? 'yes' : 'no')."\n";
22: echo str_pad('is_a( STRING:'.get_class($this).', '.$sub.', true) = ', 60). (is_a(get_class($this), $sub, true) ? 'yes' : 'no')."\n";
23: echo str_pad('is_subclass_of( OBJECT:'.get_class($this).', '.$sub.') = ', 60). (is_subclass_of($this, $sub) ? 'yes' : 'no')."\n";
24: echo str_pad('is_subclass_of( STRING:'.get_class($this).', '.$sub.') = ', 60). (is_subclass_of(get_class($this), $sub) ? 'yes' : 'no')."\n";
25: echo str_pad('is_subclass_of( STRING:'.get_class($this).', '.$sub.',false) = ', 60). (is_subclass_of(get_class($this), $sub , false) ? 'yes' : 'no')."\n";
26:
27: // with autoload options..
28: echo ">>> With Undefined\n";
29: echo str_pad('is_a( STRING:undefB, '.$sub.',true) = ', 60). (is_a('undefB', $sub, true) ? 'yes' : 'no')."\n";
30: echo str_pad('is_a( STRING:undefB, '.$sub.') = ', 60). (is_a('undefB', $sub) ? 'yes' : 'no')."\n";
31: echo str_pad('is_subclass_of( STRING:undefB, '.$sub.',false) = ', 60). (is_subclass_of('undefB', $sub, false) ? 'yes' : 'no')."\n";
32: echo str_pad('is_subclass_of( STRING:undefB, '.$sub.') = ', 60). (is_subclass_of('undefB', $sub) ? 'yes' : 'no')."\n";
33: }
34: function test() {
35: echo $this->_is_a('base');
36: echo $this->_is_a('derived_a');
37: echo $this->_is_a('if_a');
38: echo $this->_is_a('undefA');
39: echo "\n";
40: }
41: }
42:
43: class derived_a extends base implements if_a {
44: function f_a() {}
45: }
46:
47: class derived_b extends base implements if_a, if_b {
48: function f_a() {}
49: function f_b() {}
50: }
51:
52: class derived_c extends derived_a implements if_b {
53: function f_b() {}
54: }
55:
56: class derived_d extends derived_c {
57: }
58:
59: $t = new base();
60: $t->test();
61:
62: $t = new derived_a();
63: $t->test();
64:
65: eval('
66: function __autoload($name)
67: {
68: echo ">>>> In __autoload: ";
69: var_dump($name);
70: }
71: ');
72:
73: echo "NOW WITH AUTOLOAD\n\n";
74:
75: $t = new base();
76: $t->test();
77:
78: $t = new derived_a();
79: $t->test();
80:
81: $t = new derived_b();
82: $t->test();
83:
84:
85:
86:
87:
88: ?>
89: --EXPECTF--
90: >>> With Defined class
91: is_a( OBJECT:base, base) = yes
92: is_a( STRING:base, base) = no
93: is_a( STRING:base, base, true) = yes
94: is_subclass_of( OBJECT:base, base) = no
95: is_subclass_of( STRING:base, base) = no
96: is_subclass_of( STRING:base, base,false) = no
97: >>> With Undefined
98: is_a( STRING:undefB, base,true) = no
99: is_a( STRING:undefB, base) = no
100: is_subclass_of( STRING:undefB, base,false) = no
101: is_subclass_of( STRING:undefB, base) = no
102:
103: >>> With Defined class
104: is_a( OBJECT:base, derived_a) = no
105: is_a( STRING:base, derived_a) = no
106: is_a( STRING:base, derived_a, true) = no
107: is_subclass_of( OBJECT:base, derived_a) = no
108: is_subclass_of( STRING:base, derived_a) = no
109: is_subclass_of( STRING:base, derived_a,false) = no
110: >>> With Undefined
111: is_a( STRING:undefB, derived_a,true) = no
112: is_a( STRING:undefB, derived_a) = no
113: is_subclass_of( STRING:undefB, derived_a,false) = no
114: is_subclass_of( STRING:undefB, derived_a) = no
115:
116: >>> With Defined class
117: is_a( OBJECT:base, if_a) = no
118: is_a( STRING:base, if_a) = no
119: is_a( STRING:base, if_a, true) = no
120: is_subclass_of( OBJECT:base, if_a) = no
121: is_subclass_of( STRING:base, if_a) = no
122: is_subclass_of( STRING:base, if_a,false) = no
123: >>> With Undefined
124: is_a( STRING:undefB, if_a,true) = no
125: is_a( STRING:undefB, if_a) = no
126: is_subclass_of( STRING:undefB, if_a,false) = no
127: is_subclass_of( STRING:undefB, if_a) = no
128:
129: >>> With Defined class
130: is_a( OBJECT:base, undefA) = no
131: is_a( STRING:base, undefA) = no
132: is_a( STRING:base, undefA, true) = no
133: is_subclass_of( OBJECT:base, undefA) = no
134: is_subclass_of( STRING:base, undefA) = no
135: is_subclass_of( STRING:base, undefA,false) = no
136: >>> With Undefined
137: is_a( STRING:undefB, undefA,true) = no
138: is_a( STRING:undefB, undefA) = no
139: is_subclass_of( STRING:undefB, undefA,false) = no
140: is_subclass_of( STRING:undefB, undefA) = no
141:
142:
143: >>> With Defined class
144: is_a( OBJECT:derived_a, base) = yes
145: is_a( STRING:derived_a, base) = no
146: is_a( STRING:derived_a, base, true) = yes
147: is_subclass_of( OBJECT:derived_a, base) = yes
148: is_subclass_of( STRING:derived_a, base) = yes
149: is_subclass_of( STRING:derived_a, base,false) = no
150: >>> With Undefined
151: is_a( STRING:undefB, base,true) = no
152: is_a( STRING:undefB, base) = no
153: is_subclass_of( STRING:undefB, base,false) = no
154: is_subclass_of( STRING:undefB, base) = no
155:
156: >>> With Defined class
157: is_a( OBJECT:derived_a, derived_a) = yes
158: is_a( STRING:derived_a, derived_a) = no
159: is_a( STRING:derived_a, derived_a, true) = yes
160: is_subclass_of( OBJECT:derived_a, derived_a) = no
161: is_subclass_of( STRING:derived_a, derived_a) = no
162: is_subclass_of( STRING:derived_a, derived_a,false) = no
163: >>> With Undefined
164: is_a( STRING:undefB, derived_a,true) = no
165: is_a( STRING:undefB, derived_a) = no
166: is_subclass_of( STRING:undefB, derived_a,false) = no
167: is_subclass_of( STRING:undefB, derived_a) = no
168:
169: >>> With Defined class
170: is_a( OBJECT:derived_a, if_a) = yes
171: is_a( STRING:derived_a, if_a) = no
172: is_a( STRING:derived_a, if_a, true) = yes
173: is_subclass_of( OBJECT:derived_a, if_a) = yes
174: is_subclass_of( STRING:derived_a, if_a) = yes
175: is_subclass_of( STRING:derived_a, if_a,false) = no
176: >>> With Undefined
177: is_a( STRING:undefB, if_a,true) = no
178: is_a( STRING:undefB, if_a) = no
179: is_subclass_of( STRING:undefB, if_a,false) = no
180: is_subclass_of( STRING:undefB, if_a) = no
181:
182: >>> With Defined class
183: is_a( OBJECT:derived_a, undefA) = no
184: is_a( STRING:derived_a, undefA) = no
185: is_a( STRING:derived_a, undefA, true) = no
186: is_subclass_of( OBJECT:derived_a, undefA) = no
187: is_subclass_of( STRING:derived_a, undefA) = no
188: is_subclass_of( STRING:derived_a, undefA,false) = no
189: >>> With Undefined
190: is_a( STRING:undefB, undefA,true) = no
191: is_a( STRING:undefB, undefA) = no
192: is_subclass_of( STRING:undefB, undefA,false) = no
193: is_subclass_of( STRING:undefB, undefA) = no
194:
195: NOW WITH AUTOLOAD
196:
197:
198: >>> With Defined class
199: is_a( OBJECT:base, base) = yes
200: is_a( STRING:base, base) = no
201: is_a( STRING:base, base, true) = yes
202: is_subclass_of( OBJECT:base, base) = no
203: is_subclass_of( STRING:base, base) = no
204: is_subclass_of( STRING:base, base,false) = no
205: >>> With Undefined
206: >>>> In __autoload: string(6) "undefB"
207: is_a( STRING:undefB, base,true) = no
208: is_a( STRING:undefB, base) = no
209: is_subclass_of( STRING:undefB, base,false) = no
210: >>>> In __autoload: string(6) "undefB"
211: is_subclass_of( STRING:undefB, base) = no
212:
213: >>> With Defined class
214: is_a( OBJECT:base, derived_a) = no
215: is_a( STRING:base, derived_a) = no
216: is_a( STRING:base, derived_a, true) = no
217: is_subclass_of( OBJECT:base, derived_a) = no
218: is_subclass_of( STRING:base, derived_a) = no
219: is_subclass_of( STRING:base, derived_a,false) = no
220: >>> With Undefined
221: >>>> In __autoload: string(6) "undefB"
222: is_a( STRING:undefB, derived_a,true) = no
223: is_a( STRING:undefB, derived_a) = no
224: is_subclass_of( STRING:undefB, derived_a,false) = no
225: >>>> In __autoload: string(6) "undefB"
226: is_subclass_of( STRING:undefB, derived_a) = no
227:
228: >>> With Defined class
229: is_a( OBJECT:base, if_a) = no
230: is_a( STRING:base, if_a) = no
231: is_a( STRING:base, if_a, true) = no
232: is_subclass_of( OBJECT:base, if_a) = no
233: is_subclass_of( STRING:base, if_a) = no
234: is_subclass_of( STRING:base, if_a,false) = no
235: >>> With Undefined
236: >>>> In __autoload: string(6) "undefB"
237: is_a( STRING:undefB, if_a,true) = no
238: is_a( STRING:undefB, if_a) = no
239: is_subclass_of( STRING:undefB, if_a,false) = no
240: >>>> In __autoload: string(6) "undefB"
241: is_subclass_of( STRING:undefB, if_a) = no
242:
243: >>> With Defined class
244: is_a( OBJECT:base, undefA) = no
245: is_a( STRING:base, undefA) = no
246: is_a( STRING:base, undefA, true) = no
247: is_subclass_of( OBJECT:base, undefA) = no
248: is_subclass_of( STRING:base, undefA) = no
249: is_subclass_of( STRING:base, undefA,false) = no
250: >>> With Undefined
251: >>>> In __autoload: string(6) "undefB"
252: is_a( STRING:undefB, undefA,true) = no
253: is_a( STRING:undefB, undefA) = no
254: is_subclass_of( STRING:undefB, undefA,false) = no
255: >>>> In __autoload: string(6) "undefB"
256: is_subclass_of( STRING:undefB, undefA) = no
257:
258:
259: >>> With Defined class
260: is_a( OBJECT:derived_a, base) = yes
261: is_a( STRING:derived_a, base) = no
262: is_a( STRING:derived_a, base, true) = yes
263: is_subclass_of( OBJECT:derived_a, base) = yes
264: is_subclass_of( STRING:derived_a, base) = yes
265: is_subclass_of( STRING:derived_a, base,false) = no
266: >>> With Undefined
267: >>>> In __autoload: string(6) "undefB"
268: is_a( STRING:undefB, base,true) = no
269: is_a( STRING:undefB, base) = no
270: is_subclass_of( STRING:undefB, base,false) = no
271: >>>> In __autoload: string(6) "undefB"
272: is_subclass_of( STRING:undefB, base) = no
273:
274: >>> With Defined class
275: is_a( OBJECT:derived_a, derived_a) = yes
276: is_a( STRING:derived_a, derived_a) = no
277: is_a( STRING:derived_a, derived_a, true) = yes
278: is_subclass_of( OBJECT:derived_a, derived_a) = no
279: is_subclass_of( STRING:derived_a, derived_a) = no
280: is_subclass_of( STRING:derived_a, derived_a,false) = no
281: >>> With Undefined
282: >>>> In __autoload: string(6) "undefB"
283: is_a( STRING:undefB, derived_a,true) = no
284: is_a( STRING:undefB, derived_a) = no
285: is_subclass_of( STRING:undefB, derived_a,false) = no
286: >>>> In __autoload: string(6) "undefB"
287: is_subclass_of( STRING:undefB, derived_a) = no
288:
289: >>> With Defined class
290: is_a( OBJECT:derived_a, if_a) = yes
291: is_a( STRING:derived_a, if_a) = no
292: is_a( STRING:derived_a, if_a, true) = yes
293: is_subclass_of( OBJECT:derived_a, if_a) = yes
294: is_subclass_of( STRING:derived_a, if_a) = yes
295: is_subclass_of( STRING:derived_a, if_a,false) = no
296: >>> With Undefined
297: >>>> In __autoload: string(6) "undefB"
298: is_a( STRING:undefB, if_a,true) = no
299: is_a( STRING:undefB, if_a) = no
300: is_subclass_of( STRING:undefB, if_a,false) = no
301: >>>> In __autoload: string(6) "undefB"
302: is_subclass_of( STRING:undefB, if_a) = no
303:
304: >>> With Defined class
305: is_a( OBJECT:derived_a, undefA) = no
306: is_a( STRING:derived_a, undefA) = no
307: is_a( STRING:derived_a, undefA, true) = no
308: is_subclass_of( OBJECT:derived_a, undefA) = no
309: is_subclass_of( STRING:derived_a, undefA) = no
310: is_subclass_of( STRING:derived_a, undefA,false) = no
311: >>> With Undefined
312: >>>> In __autoload: string(6) "undefB"
313: is_a( STRING:undefB, undefA,true) = no
314: is_a( STRING:undefB, undefA) = no
315: is_subclass_of( STRING:undefB, undefA,false) = no
316: >>>> In __autoload: string(6) "undefB"
317: is_subclass_of( STRING:undefB, undefA) = no
318:
319:
320: >>> With Defined class
321: is_a( OBJECT:derived_b, base) = yes
322: is_a( STRING:derived_b, base) = no
323: is_a( STRING:derived_b, base, true) = yes
324: is_subclass_of( OBJECT:derived_b, base) = yes
325: is_subclass_of( STRING:derived_b, base) = yes
326: is_subclass_of( STRING:derived_b, base,false) = no
327: >>> With Undefined
328: >>>> In __autoload: string(6) "undefB"
329: is_a( STRING:undefB, base,true) = no
330: is_a( STRING:undefB, base) = no
331: is_subclass_of( STRING:undefB, base,false) = no
332: >>>> In __autoload: string(6) "undefB"
333: is_subclass_of( STRING:undefB, base) = no
334:
335: >>> With Defined class
336: is_a( OBJECT:derived_b, derived_a) = no
337: is_a( STRING:derived_b, derived_a) = no
338: is_a( STRING:derived_b, derived_a, true) = no
339: is_subclass_of( OBJECT:derived_b, derived_a) = no
340: is_subclass_of( STRING:derived_b, derived_a) = no
341: is_subclass_of( STRING:derived_b, derived_a,false) = no
342: >>> With Undefined
343: >>>> In __autoload: string(6) "undefB"
344: is_a( STRING:undefB, derived_a,true) = no
345: is_a( STRING:undefB, derived_a) = no
346: is_subclass_of( STRING:undefB, derived_a,false) = no
347: >>>> In __autoload: string(6) "undefB"
348: is_subclass_of( STRING:undefB, derived_a) = no
349:
350: >>> With Defined class
351: is_a( OBJECT:derived_b, if_a) = yes
352: is_a( STRING:derived_b, if_a) = no
353: is_a( STRING:derived_b, if_a, true) = yes
354: is_subclass_of( OBJECT:derived_b, if_a) = yes
355: is_subclass_of( STRING:derived_b, if_a) = yes
356: is_subclass_of( STRING:derived_b, if_a,false) = no
357: >>> With Undefined
358: >>>> In __autoload: string(6) "undefB"
359: is_a( STRING:undefB, if_a,true) = no
360: is_a( STRING:undefB, if_a) = no
361: is_subclass_of( STRING:undefB, if_a,false) = no
362: >>>> In __autoload: string(6) "undefB"
363: is_subclass_of( STRING:undefB, if_a) = no
364:
365: >>> With Defined class
366: is_a( OBJECT:derived_b, undefA) = no
367: is_a( STRING:derived_b, undefA) = no
368: is_a( STRING:derived_b, undefA, true) = no
369: is_subclass_of( OBJECT:derived_b, undefA) = no
370: is_subclass_of( STRING:derived_b, undefA) = no
371: is_subclass_of( STRING:derived_b, undefA,false) = no
372: >>> With Undefined
373: >>>> In __autoload: string(6) "undefB"
374: is_a( STRING:undefB, undefA,true) = no
375: is_a( STRING:undefB, undefA) = no
376: is_subclass_of( STRING:undefB, undefA,false) = no
377: >>>> In __autoload: string(6) "undefB"
378: is_subclass_of( STRING:undefB, undefA) = no
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>