Annotation of embedaddon/php/tests/lang/foreachLoopObjects.002.phpt, revision 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>