2
Foreach loop tests - visibility.
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";
13
function doForEachC() {
14
echo "in C::doForEachC\n";
15
foreach ($this as $k=>&$v) {
21
static function doForEach($obj) {
22
echo "in C::doForEach\n";
23
foreach ($obj as $k=>&$v) {
29
function doForEachOnThis() {
30
echo "in C::doForEachOnThis\n";
31
foreach ($this as $k=>&$v) {
41
private $f = "Original f";
42
protected $g = "Original g";
44
static function doForEach($obj) {
45
echo "in D::doForEach\n";
46
foreach ($obj as $k=>&$v) {
52
function doForEachOnThis() {
53
echo "in D::doForEachOnThis\n";
54
foreach ($this as $k=>&$v) {
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";
68
static function doForEach($obj) {
69
echo "in E::doForEach\n";
70
foreach ($obj as $k=>&$v) {
76
function doForEachOnThis() {
77
echo "in E::doForEachOnThis\n";
78
foreach ($this as $k=>&$v) {
85
echo "\n\nIterate over various generations from within overridden methods:\n";
86
echo "\n--> Using instance of C:\n";
88
$myC->doForEachOnThis();
90
echo "\n--> Using instance of D:\n";
92
$myD->doForEachOnThis();
94
echo "\n--> Using instance of E:\n";
96
$myE->doForEachOnThis();
99
echo "\n\nIterate over various generations from within an inherited method:\n";
100
echo "\n--> Using instance of C:\n";
104
echo "\n--> Using instance of D:\n";
108
echo "\n--> Using instance of E:\n";
113
echo "\n\nIterate over various generations from within an overridden static method:\n";
114
echo "\n--> Using instance of C:\n";
124
echo "\n--> Using instance of D:\n";
134
echo "\n--> Using instance of E:\n";
146
echo "\n\nIterate over various generations from outside the object:\n";
147
echo "\n--> Using instance of C:\n";
149
foreach ($myC as $k=>&$v) {
154
echo "\n--> Using instance of D:\n";
156
foreach ($myD as $k=>&$v) {
161
echo "\n--> Using instance of E:\n";
163
foreach ($myE as $k=>&$v) {
171
Iterate over various generations from within overridden methods:
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"
182
string(9) "changed.a"
184
string(9) "changed.b"
186
string(9) "changed.c"
188
string(9) "changed.d"
190
string(9) "changed.e"
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"
203
string(9) "changed.f"
205
string(9) "changed.g"
207
string(9) "changed.a"
209
string(9) "changed.b"
211
string(9) "changed.c"
213
string(9) "changed.d"
215
string(10) "Original e"
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"
228
string(9) "changed.a"
230
string(9) "changed.b"
232
string(9) "changed.c"
234
string(9) "changed.d"
236
string(9) "changed.e"
238
string(10) "Original f"
240
string(9) "changed.g"
242
string(10) "Original e"
246
Iterate over various generations from within an inherited method:
248
--> Using instance of C:
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"
257
string(9) "changed.a"
259
string(9) "changed.b"
261
string(9) "changed.c"
263
string(9) "changed.d"
265
string(9) "changed.e"
268
--> Using instance of D:
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"
278
string(10) "Original f"
280
string(9) "changed.g"
282
string(9) "changed.a"
284
string(9) "changed.b"
286
string(9) "changed.c"
288
string(9) "changed.d"
290
string(9) "changed.e"
293
--> Using instance of E:
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"
303
string(9) "changed.a"
305
string(9) "changed.b"
307
string(9) "changed.c"
309
string(9) "changed.d"
311
string(12) "Overridden e"
313
string(10) "Original f"
315
string(9) "changed.g"
317
string(9) "changed.e"
321
Iterate over various generations from within an overridden static method:
323
--> Using instance of C:
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"
332
string(9) "changed.a"
334
string(9) "changed.b"
336
string(9) "changed.c"
338
string(9) "changed.d"
340
string(9) "changed.e"
343
string(10) "Original a"
344
string(10) "Original b"
345
string(10) "Original c"
346
string(10) "Original d"
349
string(9) "changed.a"
351
string(9) "changed.b"
353
string(9) "changed.c"
355
string(9) "changed.d"
357
string(10) "Original e"
360
string(10) "Original a"
361
string(10) "Original b"
362
string(10) "Original c"
363
string(10) "Original d"
366
string(9) "changed.a"
368
string(9) "changed.b"
370
string(9) "changed.c"
372
string(9) "changed.d"
374
string(10) "Original e"
377
--> Using instance of D:
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"
387
string(10) "Original f"
389
string(9) "changed.g"
391
string(9) "changed.a"
393
string(9) "changed.b"
395
string(9) "changed.c"
397
string(9) "changed.d"
399
string(9) "changed.e"
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"
410
string(9) "changed.f"
412
string(9) "changed.g"
414
string(9) "changed.a"
416
string(9) "changed.b"
418
string(9) "changed.c"
420
string(9) "changed.d"
422
string(10) "Original e"
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"
432
string(10) "Original f"
434
string(9) "changed.g"
436
string(9) "changed.a"
438
string(9) "changed.b"
440
string(9) "changed.c"
442
string(9) "changed.d"
444
string(10) "Original e"
447
--> Using instance of E:
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"
457
string(9) "changed.a"
459
string(9) "changed.b"
461
string(9) "changed.c"
463
string(9) "changed.d"
465
string(12) "Overridden e"
467
string(10) "Original f"
469
string(9) "changed.g"
471
string(9) "changed.e"
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"
482
string(9) "changed.a"
484
string(9) "changed.b"
486
string(9) "changed.c"
488
string(9) "changed.d"
490
string(12) "Overridden e"
492
string(9) "changed.f"
494
string(9) "changed.g"
496
string(10) "Original e"
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"
507
string(9) "changed.a"
509
string(9) "changed.b"
511
string(9) "changed.c"
513
string(9) "changed.d"
515
string(9) "changed.e"
517
string(10) "Original f"
519
string(9) "changed.g"
521
string(10) "Original e"
525
Iterate over various generations from outside the object:
527
--> Using instance of C:
528
string(10) "Original a"
529
string(10) "Original b"
530
string(10) "Original c"
533
string(9) "changed.a"
535
string(9) "changed.b"
537
&string(9) "changed.c"
539
string(10) "Original d"
541
string(10) "Original e"
544
--> Using instance of D:
545
string(10) "Original a"
546
string(10) "Original b"
547
string(10) "Original c"
550
string(10) "Original f"
552
string(10) "Original g"
554
string(9) "changed.a"
556
string(9) "changed.b"
558
&string(9) "changed.c"
560
string(10) "Original d"
562
string(10) "Original e"
565
--> Using instance of E:
566
string(12) "Overridden a"
567
string(12) "Overridden b"
568
string(12) "Overridden c"
571
string(9) "changed.a"
573
string(9) "changed.b"
575
&string(9) "changed.c"
577
string(12) "Overridden d"
579
string(12) "Overridden e"
581
string(10) "Original f"
583
string(10) "Original g"
585
string(10) "Original e"
b'\\ No newline at end of file'