File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / lang / foreachLoopIteratorAggregate.003.phpt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:48:06 2012 UTC (12 years, 6 months ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17p0, v5_4_17, v5_3_10, HEAD
php

    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>