Annotation of embedaddon/php/tests/lang/foreachLoopIteratorAggregate.003.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: foreach with nested iteratorAggregates
        !             3: --FILE--
        !             4: <?php
        !             5: class EnglishMealIterator implements Iterator {
        !             6:        private $pos=0;
        !             7:        private $myContent=array("breakfast", "dinner", "tea");
        !             8:        
        !             9:        public function valid() {
        !            10:                global $indent;
        !            11:                echo "$indent--> " . __METHOD__ . " ($this->pos)\n";
        !            12:                return $this->pos<3;
        !            13:        }
        !            14:        
        !            15:        public function next() {
        !            16:                global $indent;
        !            17:                echo "$indent--> " . __METHOD__ . " ($this->pos)\n";
        !            18:                return $this->myContent[$this->pos++];
        !            19:        }
        !            20:        
        !            21:        public function rewind() {
        !            22:                global $indent;
        !            23:                echo "$indent--> " . __METHOD__ . " ($this->pos)\n";
        !            24:                $this->pos=0;
        !            25:        }
        !            26: 
        !            27:        public function current() {
        !            28:                global $indent;
        !            29:                echo "$indent--> " . __METHOD__ . " ($this->pos)\n";
        !            30:                return $this->myContent[$this->pos];
        !            31:        }
        !            32:        
        !            33:        public function key() {
        !            34:                global $indent;
        !            35:                echo "$indent--> " . __METHOD__ . " ($this->pos)\n";
        !            36:                return "meal " . $this->pos;
        !            37:        }
        !            38:        
        !            39: }
        !            40: 
        !            41: class A1 implements IteratorAggregate {
        !            42:        function getIterator() {
        !            43:                return new EnglishMealIterator;
        !            44:        }
        !            45: }
        !            46: 
        !            47: class A2 implements IteratorAggregate {
        !            48:        function getIterator() {
        !            49:                return new A1;
        !            50:        }
        !            51: }
        !            52: 
        !            53: class A3 implements IteratorAggregate {
        !            54:        function getIterator() {
        !            55:                return new A2;
        !            56:        }
        !            57: }
        !            58: 
        !            59: echo "\n-----( A1: )-----\n";
        !            60: foreach (new A1 as $k=>$v) {
        !            61:        echo "$k => $v\n";      
        !            62: }
        !            63: 
        !            64: echo "\n-----( A2: )-----\n";
        !            65: foreach (new A2 as $k=>$v) {
        !            66:        echo "$k => $v\n";      
        !            67: }
        !            68: 
        !            69: echo "\n-----( A3: )-----\n";
        !            70: foreach (new A3 as $k=>$v) {
        !            71:        echo "$k => $v\n";      
        !            72: }
        !            73: 
        !            74: ?>
        !            75: ===DONE===
        !            76: --EXPECTF--
        !            77: -----( A1: )-----
        !            78: --> EnglishMealIterator::rewind (0)
        !            79: --> EnglishMealIterator::valid (0)
        !            80: --> EnglishMealIterator::current (0)
        !            81: --> EnglishMealIterator::key (0)
        !            82: meal 0 => breakfast
        !            83: --> EnglishMealIterator::next (0)
        !            84: --> EnglishMealIterator::valid (1)
        !            85: --> EnglishMealIterator::current (1)
        !            86: --> EnglishMealIterator::key (1)
        !            87: meal 1 => dinner
        !            88: --> EnglishMealIterator::next (1)
        !            89: --> EnglishMealIterator::valid (2)
        !            90: --> EnglishMealIterator::current (2)
        !            91: --> EnglishMealIterator::key (2)
        !            92: meal 2 => tea
        !            93: --> EnglishMealIterator::next (2)
        !            94: --> EnglishMealIterator::valid (3)
        !            95: 
        !            96: -----( A2: )-----
        !            97: --> EnglishMealIterator::rewind (0)
        !            98: --> EnglishMealIterator::valid (0)
        !            99: --> EnglishMealIterator::current (0)
        !           100: --> EnglishMealIterator::key (0)
        !           101: meal 0 => breakfast
        !           102: --> EnglishMealIterator::next (0)
        !           103: --> EnglishMealIterator::valid (1)
        !           104: --> EnglishMealIterator::current (1)
        !           105: --> EnglishMealIterator::key (1)
        !           106: meal 1 => dinner
        !           107: --> EnglishMealIterator::next (1)
        !           108: --> EnglishMealIterator::valid (2)
        !           109: --> EnglishMealIterator::current (2)
        !           110: --> EnglishMealIterator::key (2)
        !           111: meal 2 => tea
        !           112: --> EnglishMealIterator::next (2)
        !           113: --> EnglishMealIterator::valid (3)
        !           114: 
        !           115: -----( A3: )-----
        !           116: --> EnglishMealIterator::rewind (0)
        !           117: --> EnglishMealIterator::valid (0)
        !           118: --> EnglishMealIterator::current (0)
        !           119: --> EnglishMealIterator::key (0)
        !           120: meal 0 => breakfast
        !           121: --> EnglishMealIterator::next (0)
        !           122: --> EnglishMealIterator::valid (1)
        !           123: --> EnglishMealIterator::current (1)
        !           124: --> EnglishMealIterator::key (1)
        !           125: meal 1 => dinner
        !           126: --> EnglishMealIterator::next (1)
        !           127: --> EnglishMealIterator::valid (2)
        !           128: --> EnglishMealIterator::current (2)
        !           129: --> EnglishMealIterator::key (2)
        !           130: meal 2 => tea
        !           131: --> EnglishMealIterator::next (2)
        !           132: --> EnglishMealIterator::valid (3)
        !           133: ===DONE===

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>