Annotation of embedaddon/php/tests/lang/foreachLoopIterator.001.phpt, revision 1.1.1.1

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

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