File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / classes / iterators_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, 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: 	}
   19: 	function valid() {
   20: 		$more = $this->num < $this->obj->max;
   21: 		echo __METHOD__ . ' = ' .($more ? 'true' : 'false') . "\n";
   22: 		return $more;
   23: 	}
   24: 	function current() {
   25: 		echo __METHOD__ . "\n";
   26: 		return $this->num;
   27: 	}
   28: 	function next() {
   29: 		echo __METHOD__ . "\n";
   30: 		$this->num++;
   31: 	}
   32: 	function key() {
   33: 		return $this->num;
   34: 	}
   35: }
   36: 	
   37: class c implements IteratorAggregate {
   38: 
   39: 	public $max = 4;
   40: 
   41: 	function getIterator() {
   42: 		echo __METHOD__ . "\n";
   43: 		return new c_iter($this);
   44: 	}
   45: }
   46: 
   47: $t = new c();
   48: 
   49: foreach($t as $v) {
   50: 	if ($v == 0) {
   51: 		echo "continue outer\n";
   52: 		continue;
   53: 	}
   54: 	foreach($t as $w) {
   55: 		if ($w == 1) {
   56: 			echo "continue inner\n";
   57: 			continue;
   58: 		}
   59: 		if ($w == 2) {
   60: 			echo "break inner\n";
   61: 			break;
   62: 		}
   63: 		echo "double:$v:$w\n";
   64: 	}
   65: 	if ($v == 2) {
   66: 		echo "break outer\n";
   67: 		break;
   68: 	}
   69: }
   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: continue outer
   80: c_iter::next
   81: c_iter::valid = true
   82: c_iter::current
   83: c::getIterator
   84: c_iter::__construct
   85: c_iter::rewind
   86: c_iter::valid = true
   87: c_iter::current
   88: double:1:0
   89: c_iter::next
   90: c_iter::valid = true
   91: c_iter::current
   92: continue inner
   93: c_iter::next
   94: c_iter::valid = true
   95: c_iter::current
   96: break inner
   97: c_iter::next
   98: c_iter::valid = true
   99: c_iter::current
  100: c::getIterator
  101: c_iter::__construct
  102: c_iter::rewind
  103: c_iter::valid = true
  104: c_iter::current
  105: double:2:0
  106: c_iter::next
  107: c_iter::valid = true
  108: c_iter::current
  109: continue inner
  110: c_iter::next
  111: c_iter::valid = true
  112: c_iter::current
  113: break inner
  114: break outer
  115: Done

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