Annotation of embedaddon/php/tests/lang/foreachLoopObjects.002.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Foreach loop tests - visibility.
3: --FILE--
4: <?php
5:
6: class C {
7: public $a = "Original a";
8: public $b = "Original b";
9: public $c = "Original c";
10: protected $d = "Original d";
11: private $e = "Original e";
12:
13: function doForEachC() {
14: echo "in C::doForEachC\n";
15: foreach ($this as $k=>&$v) {
16: var_dump($v);
17: $v="changed.$k";
18: }
19: }
20:
21: static function doForEach($obj) {
22: echo "in C::doForEach\n";
23: foreach ($obj as $k=>&$v) {
24: var_dump($v);
25: $v="changed.$k";
26: }
27: }
28:
29: function doForEachOnThis() {
30: echo "in C::doForEachOnThis\n";
31: foreach ($this as $k=>&$v) {
32: var_dump($v);
33: $v="changed.$k";
34: }
35: }
36:
37: }
38:
39: class D extends C {
40:
41: private $f = "Original f";
42: protected $g = "Original g";
43:
44: static function doForEach($obj) {
45: echo "in D::doForEach\n";
46: foreach ($obj as $k=>&$v) {
47: var_dump($v);
48: $v="changed.$k";
49: }
50: }
51:
52: function doForEachOnThis() {
53: echo "in D::doForEachOnThis\n";
54: foreach ($this as $k=>&$v) {
55: var_dump($v);
56: $v="changed.$k";
57: }
58: }
59: }
60:
61: class E extends D {
62: public $a = "Overridden a";
63: public $b = "Overridden b";
64: public $c = "Overridden c";
65: protected $d = "Overridden d";
66: private $e = "Overridden e";
67:
68: static function doForEach($obj) {
69: echo "in E::doForEach\n";
70: foreach ($obj as $k=>&$v) {
71: var_dump($v);
72: $v="changed.$k";
73: }
74: }
75:
76: function doForEachOnThis() {
77: echo "in E::doForEachOnThis\n";
78: foreach ($this as $k=>&$v) {
79: var_dump($v);
80: $v="changed.$k";
81: }
82: }
83: }
84:
85: echo "\n\nIterate over various generations from within overridden methods:\n";
86: echo "\n--> Using instance of C:\n";
87: $myC = new C;
88: $myC->doForEachOnThis();
89: var_dump($myC);
90: echo "\n--> Using instance of D:\n";
91: $myD = new D;
92: $myD->doForEachOnThis();
93: var_dump($myD);
94: echo "\n--> Using instance of E:\n";
95: $myE = new E;
96: $myE->doForEachOnThis();
97: var_dump($myE);
98:
99: echo "\n\nIterate over various generations from within an inherited method:\n";
100: echo "\n--> Using instance of C:\n";
101: $myC = new C;
102: $myC->doForEachC();
103: var_dump($myC);
104: echo "\n--> Using instance of D:\n";
105: $myD = new D;
106: $myD->doForEachC();
107: var_dump($myD);
108: echo "\n--> Using instance of E:\n";
109: $myE = new E;
110: $myE->doForEachC();
111: var_dump($myE);
112:
113: echo "\n\nIterate over various generations from within an overridden static method:\n";
114: echo "\n--> Using instance of C:\n";
115: $myC = new C;
116: C::doForEach($myC);
117: var_dump($myC);
118: $myC = new C;
119: D::doForEach($myC);
120: var_dump($myC);
121: $myC = new C;
122: E::doForEach($myC);
123: var_dump($myC);
124: echo "\n--> Using instance of D:\n";
125: $myD = new D;
126: C::doForEach($myD);
127: var_dump($myD);
128: $myD = new D;
129: D::doForEach($myD);
130: var_dump($myD);
131: $myD = new D;
132: E::doForEach($myD);
133: var_dump($myD);
134: echo "\n--> Using instance of E:\n";
135: $myE = new E;
136: C::doForEach($myE);
137: var_dump($myE);
138: $myE = new E;
139: D::doForEach($myE);
140: var_dump($myE);
141: $myE = new E;
142: E::doForEach($myE);
143: var_dump($myE);
144:
145:
146: echo "\n\nIterate over various generations from outside the object:\n";
147: echo "\n--> Using instance of C:\n";
148: $myC = new C;
149: foreach ($myC as $k=>&$v) {
150: var_dump($v);
151: $v="changed.$k";
152: }
153: var_dump($myC);
154: echo "\n--> Using instance of D:\n";
155: $myD = new D;
156: foreach ($myD as $k=>&$v) {
157: var_dump($v);
158: $v="changed.$k";
159: }
160: var_dump($myD);
161: echo "\n--> Using instance of E:\n";
162: $myE = new E;
163: foreach ($myE as $k=>&$v) {
164: var_dump($v);
165: $v="changed.$k";
166: }
167: var_dump($myE);
168: ?>
169: ===DONE===
170: --EXPECTF--
171: Iterate over various generations from within overridden methods:
172:
173: --> Using instance of C:
174: in C::doForEachOnThis
175: string(10) "Original a"
176: string(10) "Original b"
177: string(10) "Original c"
178: string(10) "Original d"
179: string(10) "Original e"
180: object(C)#%d (5) {
181: ["a"]=>
182: string(9) "changed.a"
183: ["b"]=>
184: string(9) "changed.b"
185: ["c"]=>
186: string(9) "changed.c"
187: ["d":protected]=>
188: string(9) "changed.d"
189: ["e":"C":private]=>
190: string(9) "changed.e"
191: }
192:
193: --> Using instance of D:
194: in D::doForEachOnThis
195: string(10) "Original f"
196: string(10) "Original g"
197: string(10) "Original a"
198: string(10) "Original b"
199: string(10) "Original c"
200: string(10) "Original d"
201: object(D)#%d (7) {
202: ["f":"D":private]=>
203: string(9) "changed.f"
204: ["g":protected]=>
205: string(9) "changed.g"
206: ["a"]=>
207: string(9) "changed.a"
208: ["b"]=>
209: string(9) "changed.b"
210: ["c"]=>
211: string(9) "changed.c"
212: ["d":protected]=>
213: string(9) "changed.d"
214: ["e":"C":private]=>
215: string(10) "Original e"
216: }
217:
218: --> Using instance of E:
219: in E::doForEachOnThis
220: string(12) "Overridden a"
221: string(12) "Overridden b"
222: string(12) "Overridden c"
223: string(12) "Overridden d"
224: string(12) "Overridden e"
225: string(10) "Original g"
226: object(E)#%d (8) {
227: ["a"]=>
228: string(9) "changed.a"
229: ["b"]=>
230: string(9) "changed.b"
231: ["c"]=>
232: string(9) "changed.c"
233: ["d":protected]=>
234: string(9) "changed.d"
235: ["e":"E":private]=>
236: string(9) "changed.e"
237: ["f":"D":private]=>
238: string(10) "Original f"
239: ["g":protected]=>
240: string(9) "changed.g"
241: ["e":"C":private]=>
242: string(10) "Original e"
243: }
244:
245:
246: Iterate over various generations from within an inherited method:
247:
248: --> Using instance of C:
249: in C::doForEachC
250: string(10) "Original a"
251: string(10) "Original b"
252: string(10) "Original c"
253: string(10) "Original d"
254: string(10) "Original e"
255: object(C)#%d (5) {
256: ["a"]=>
257: string(9) "changed.a"
258: ["b"]=>
259: string(9) "changed.b"
260: ["c"]=>
261: string(9) "changed.c"
262: ["d":protected]=>
263: string(9) "changed.d"
264: ["e":"C":private]=>
265: string(9) "changed.e"
266: }
267:
268: --> Using instance of D:
269: in C::doForEachC
270: string(10) "Original g"
271: string(10) "Original a"
272: string(10) "Original b"
273: string(10) "Original c"
274: string(10) "Original d"
275: string(10) "Original e"
276: object(D)#%d (7) {
277: ["f":"D":private]=>
278: string(10) "Original f"
279: ["g":protected]=>
280: string(9) "changed.g"
281: ["a"]=>
282: string(9) "changed.a"
283: ["b"]=>
284: string(9) "changed.b"
285: ["c"]=>
286: string(9) "changed.c"
287: ["d":protected]=>
288: string(9) "changed.d"
289: ["e":"C":private]=>
290: string(9) "changed.e"
291: }
292:
293: --> Using instance of E:
294: in C::doForEachC
295: string(12) "Overridden a"
296: string(12) "Overridden b"
297: string(12) "Overridden c"
298: string(12) "Overridden d"
299: string(10) "Original g"
300: string(10) "Original e"
301: object(E)#%d (8) {
302: ["a"]=>
303: string(9) "changed.a"
304: ["b"]=>
305: string(9) "changed.b"
306: ["c"]=>
307: string(9) "changed.c"
308: ["d":protected]=>
309: string(9) "changed.d"
310: ["e":"E":private]=>
311: string(12) "Overridden e"
312: ["f":"D":private]=>
313: string(10) "Original f"
314: ["g":protected]=>
315: string(9) "changed.g"
316: ["e":"C":private]=>
317: string(9) "changed.e"
318: }
319:
320:
321: Iterate over various generations from within an overridden static method:
322:
323: --> Using instance of C:
324: in C::doForEach
325: string(10) "Original a"
326: string(10) "Original b"
327: string(10) "Original c"
328: string(10) "Original d"
329: string(10) "Original e"
330: object(C)#%d (5) {
331: ["a"]=>
332: string(9) "changed.a"
333: ["b"]=>
334: string(9) "changed.b"
335: ["c"]=>
336: string(9) "changed.c"
337: ["d":protected]=>
338: string(9) "changed.d"
339: ["e":"C":private]=>
340: string(9) "changed.e"
341: }
342: in D::doForEach
343: string(10) "Original a"
344: string(10) "Original b"
345: string(10) "Original c"
346: string(10) "Original d"
347: object(C)#%d (5) {
348: ["a"]=>
349: string(9) "changed.a"
350: ["b"]=>
351: string(9) "changed.b"
352: ["c"]=>
353: string(9) "changed.c"
354: ["d":protected]=>
355: string(9) "changed.d"
356: ["e":"C":private]=>
357: string(10) "Original e"
358: }
359: in E::doForEach
360: string(10) "Original a"
361: string(10) "Original b"
362: string(10) "Original c"
363: string(10) "Original d"
364: object(C)#%d (5) {
365: ["a"]=>
366: string(9) "changed.a"
367: ["b"]=>
368: string(9) "changed.b"
369: ["c"]=>
370: string(9) "changed.c"
371: ["d":protected]=>
372: string(9) "changed.d"
373: ["e":"C":private]=>
374: string(10) "Original e"
375: }
376:
377: --> Using instance of D:
378: in C::doForEach
379: string(10) "Original g"
380: string(10) "Original a"
381: string(10) "Original b"
382: string(10) "Original c"
383: string(10) "Original d"
384: string(10) "Original e"
385: object(D)#%d (7) {
386: ["f":"D":private]=>
387: string(10) "Original f"
388: ["g":protected]=>
389: string(9) "changed.g"
390: ["a"]=>
391: string(9) "changed.a"
392: ["b"]=>
393: string(9) "changed.b"
394: ["c"]=>
395: string(9) "changed.c"
396: ["d":protected]=>
397: string(9) "changed.d"
398: ["e":"C":private]=>
399: string(9) "changed.e"
400: }
401: in D::doForEach
402: string(10) "Original f"
403: string(10) "Original g"
404: string(10) "Original a"
405: string(10) "Original b"
406: string(10) "Original c"
407: string(10) "Original d"
408: object(D)#%d (7) {
409: ["f":"D":private]=>
410: string(9) "changed.f"
411: ["g":protected]=>
412: string(9) "changed.g"
413: ["a"]=>
414: string(9) "changed.a"
415: ["b"]=>
416: string(9) "changed.b"
417: ["c"]=>
418: string(9) "changed.c"
419: ["d":protected]=>
420: string(9) "changed.d"
421: ["e":"C":private]=>
422: string(10) "Original e"
423: }
424: in E::doForEach
425: string(10) "Original g"
426: string(10) "Original a"
427: string(10) "Original b"
428: string(10) "Original c"
429: string(10) "Original d"
430: object(D)#%d (7) {
431: ["f":"D":private]=>
432: string(10) "Original f"
433: ["g":protected]=>
434: string(9) "changed.g"
435: ["a"]=>
436: string(9) "changed.a"
437: ["b"]=>
438: string(9) "changed.b"
439: ["c"]=>
440: string(9) "changed.c"
441: ["d":protected]=>
442: string(9) "changed.d"
443: ["e":"C":private]=>
444: string(10) "Original e"
445: }
446:
447: --> Using instance of E:
448: in C::doForEach
449: string(12) "Overridden a"
450: string(12) "Overridden b"
451: string(12) "Overridden c"
452: string(12) "Overridden d"
453: string(10) "Original g"
454: string(10) "Original e"
455: object(E)#%d (8) {
456: ["a"]=>
457: string(9) "changed.a"
458: ["b"]=>
459: string(9) "changed.b"
460: ["c"]=>
461: string(9) "changed.c"
462: ["d":protected]=>
463: string(9) "changed.d"
464: ["e":"E":private]=>
465: string(12) "Overridden e"
466: ["f":"D":private]=>
467: string(10) "Original f"
468: ["g":protected]=>
469: string(9) "changed.g"
470: ["e":"C":private]=>
471: string(9) "changed.e"
472: }
473: in D::doForEach
474: string(12) "Overridden a"
475: string(12) "Overridden b"
476: string(12) "Overridden c"
477: string(12) "Overridden d"
478: string(10) "Original f"
479: string(10) "Original g"
480: object(E)#%d (8) {
481: ["a"]=>
482: string(9) "changed.a"
483: ["b"]=>
484: string(9) "changed.b"
485: ["c"]=>
486: string(9) "changed.c"
487: ["d":protected]=>
488: string(9) "changed.d"
489: ["e":"E":private]=>
490: string(12) "Overridden e"
491: ["f":"D":private]=>
492: string(9) "changed.f"
493: ["g":protected]=>
494: string(9) "changed.g"
495: ["e":"C":private]=>
496: string(10) "Original e"
497: }
498: in E::doForEach
499: string(12) "Overridden a"
500: string(12) "Overridden b"
501: string(12) "Overridden c"
502: string(12) "Overridden d"
503: string(12) "Overridden e"
504: string(10) "Original g"
505: object(E)#%d (8) {
506: ["a"]=>
507: string(9) "changed.a"
508: ["b"]=>
509: string(9) "changed.b"
510: ["c"]=>
511: string(9) "changed.c"
512: ["d":protected]=>
513: string(9) "changed.d"
514: ["e":"E":private]=>
515: string(9) "changed.e"
516: ["f":"D":private]=>
517: string(10) "Original f"
518: ["g":protected]=>
519: string(9) "changed.g"
520: ["e":"C":private]=>
521: string(10) "Original e"
522: }
523:
524:
525: Iterate over various generations from outside the object:
526:
527: --> Using instance of C:
528: string(10) "Original a"
529: string(10) "Original b"
530: string(10) "Original c"
531: object(C)#%d (5) {
532: ["a"]=>
533: string(9) "changed.a"
534: ["b"]=>
535: string(9) "changed.b"
536: ["c"]=>
537: &string(9) "changed.c"
538: ["d":protected]=>
539: string(10) "Original d"
540: ["e":"C":private]=>
541: string(10) "Original e"
542: }
543:
544: --> Using instance of D:
545: string(10) "Original a"
546: string(10) "Original b"
547: string(10) "Original c"
548: object(D)#%d (7) {
549: ["f":"D":private]=>
550: string(10) "Original f"
551: ["g":protected]=>
552: string(10) "Original g"
553: ["a"]=>
554: string(9) "changed.a"
555: ["b"]=>
556: string(9) "changed.b"
557: ["c"]=>
558: &string(9) "changed.c"
559: ["d":protected]=>
560: string(10) "Original d"
561: ["e":"C":private]=>
562: string(10) "Original e"
563: }
564:
565: --> Using instance of E:
566: string(12) "Overridden a"
567: string(12) "Overridden b"
568: string(12) "Overridden c"
569: object(E)#%d (8) {
570: ["a"]=>
571: string(9) "changed.a"
572: ["b"]=>
573: string(9) "changed.b"
574: ["c"]=>
575: &string(9) "changed.c"
576: ["d":protected]=>
577: string(12) "Overridden d"
578: ["e":"E":private]=>
579: string(12) "Overridden e"
580: ["f":"D":private]=>
581: string(10) "Original f"
582: ["g":protected]=>
583: string(10) "Original g"
584: ["e":"C":private]=>
585: string(10) "Original e"
586: }
587: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>