Annotation of embedaddon/php/tests/lang/foreachLoopIteratorAggregate.003.phpt, revision 1.1.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>