File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / lang / foreachLoopIteratorAggregate.004.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, 4 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: Duplicate of zend test tests/classes/iterators_002.phpt without expected output from destructor
    3: --FILE--
    4: <?php
    5: class c_iter implements Iterator {
    6: 
    7: 	private $obj;
    8: 	private $num = 0;
    9: 
   10: 	function __construct($obj) {
   11: 		echo __METHOD__ . "\n";
   12: 		$this->obj = $obj;
   13: 	}
   14: 	function rewind() {
   15: 		echo __METHOD__ . "\n";
   16: 		$this->num = 0;
   17: 	}
   18: 	function valid() {
   19: 		$more = $this->num < $this->obj->max;
   20: 		echo __METHOD__ . ' = ' .($more ? 'true' : 'false') . "\n";
   21: 		return $more;
   22: 	}
   23: 	function current() {
   24: 		echo __METHOD__ . "\n";
   25: 		return $this->num;
   26: 	}
   27: 	function next() {
   28: 		echo __METHOD__ . "\n";
   29: 		$this->num++;
   30: 	}
   31: 	function key() {
   32: 		echo __METHOD__ . "\n";
   33: 		switch($this->num) {
   34: 			case 0: return "1st";
   35: 			case 1: return "2nd";
   36: 			case 2: return "3rd";
   37: 			default: return "???";
   38: 		}
   39: 	}
   40: 	function __destruct() {
   41: 	}
   42: }
   43: 	
   44: class c implements IteratorAggregate {
   45: 
   46: 	public $max = 3;
   47: 
   48: 	function getIterator() {
   49: 		echo __METHOD__ . "\n";
   50: 		return new c_iter($this);
   51: 	}
   52: 	function __destruct() {
   53: 	}
   54: }
   55: 
   56: $t = new c();
   57: 
   58: foreach($t as $k => $v) {
   59: 	foreach($t as $w) {
   60: 		echo "double:$v:$w\n";
   61: 		break;
   62: 	}
   63: }
   64: 
   65: unset($t);
   66: 
   67: ?>
   68: ===DONE===
   69: --EXPECT--
   70: c::getIterator
   71: c_iter::__construct
   72: c_iter::rewind
   73: c_iter::valid = true
   74: c_iter::current
   75: c_iter::key
   76: c::getIterator
   77: c_iter::__construct
   78: c_iter::rewind
   79: c_iter::valid = true
   80: c_iter::current
   81: double:0:0
   82: c_iter::next
   83: c_iter::valid = true
   84: c_iter::current
   85: c_iter::key
   86: c::getIterator
   87: c_iter::__construct
   88: c_iter::rewind
   89: c_iter::valid = true
   90: c_iter::current
   91: double:1:0
   92: c_iter::next
   93: c_iter::valid = true
   94: c_iter::current
   95: c_iter::key
   96: c::getIterator
   97: c_iter::__construct
   98: c_iter::rewind
   99: c_iter::valid = true
  100: c_iter::current
  101: double:2:0
  102: c_iter::next
  103: c_iter::valid = false
  104: ===DONE===

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