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

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