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