Annotation of embedaddon/php/ext/spl/tests/iterator_004.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: SPL: SeekableIterator and string keys
! 3: --FILE--
! 4: <?php
! 5:
! 6: class NumericArrayIterator implements Iterator
! 7: {
! 8: protected $a;
! 9: protected $i;
! 10:
! 11: public function __construct($a)
! 12: {
! 13: echo __METHOD__ . "\n";
! 14: $this->a = $a;
! 15: }
! 16:
! 17: public function rewind()
! 18: {
! 19: echo __METHOD__ . "\n";
! 20: $this->i = 0;
! 21: }
! 22:
! 23: public function valid()
! 24: {
! 25: $ret = $this->i < count($this->a);
! 26: echo __METHOD__ . '(' . ($ret ? 'true' : 'false') . ")\n";
! 27: return $ret;
! 28: }
! 29:
! 30: public function key()
! 31: {
! 32: echo __METHOD__ . "\n";
! 33: return $this->i;
! 34: }
! 35:
! 36: public function current()
! 37: {
! 38: echo __METHOD__ . "\n";
! 39: return $this->a[$this->i];
! 40: }
! 41:
! 42: public function next()
! 43: {
! 44: echo __METHOD__ . "\n";
! 45: $this->i++;
! 46: }
! 47: }
! 48:
! 49: class SeekableNumericArrayIterator extends NumericArrayIterator implements SeekableIterator
! 50: {
! 51: public function seek($index)
! 52: {
! 53: if ($index < count($this->a)) {
! 54: $this->i = $index;
! 55: }
! 56: echo __METHOD__ . '(' . $index . ")\n";
! 57: }
! 58: }
! 59:
! 60: $a = array(1, 2, 3, 4, 5);
! 61: foreach (new LimitIterator(new NumericArrayIterator($a), 1, 3) as $v)
! 62: {
! 63: print "$v\n";
! 64: }
! 65:
! 66: echo "===SEEKABLE===\n";
! 67: $a = array(1, 2, 3, 4, 5);
! 68: foreach(new LimitIterator(new SeekableNumericArrayIterator($a), 1, 3) as $v)
! 69: {
! 70: print "$v\n";
! 71: }
! 72:
! 73: echo "===SEEKING===\n";
! 74: $a = array(1, 2, 3, 4, 5);
! 75: $l = new LimitIterator(new SeekableNumericArrayIterator($a));
! 76: for($i = 1; $i < 4; $i++)
! 77: {
! 78: $l->seek($i);
! 79: print $l->current() . "\n";
! 80: }
! 81:
! 82: ?>
! 83: ===DONE===
! 84: <?php exit(0); ?>
! 85: --EXPECT--
! 86: NumericArrayIterator::__construct
! 87: NumericArrayIterator::rewind
! 88: NumericArrayIterator::valid(true)
! 89: NumericArrayIterator::next
! 90: NumericArrayIterator::valid(true)
! 91: NumericArrayIterator::valid(true)
! 92: NumericArrayIterator::current
! 93: NumericArrayIterator::key
! 94: 2
! 95: NumericArrayIterator::next
! 96: NumericArrayIterator::valid(true)
! 97: NumericArrayIterator::current
! 98: NumericArrayIterator::key
! 99: 3
! 100: NumericArrayIterator::next
! 101: NumericArrayIterator::valid(true)
! 102: NumericArrayIterator::current
! 103: NumericArrayIterator::key
! 104: 4
! 105: NumericArrayIterator::next
! 106: ===SEEKABLE===
! 107: NumericArrayIterator::__construct
! 108: NumericArrayIterator::rewind
! 109: SeekableNumericArrayIterator::seek(1)
! 110: NumericArrayIterator::valid(true)
! 111: NumericArrayIterator::current
! 112: NumericArrayIterator::key
! 113: 2
! 114: NumericArrayIterator::next
! 115: NumericArrayIterator::valid(true)
! 116: NumericArrayIterator::current
! 117: NumericArrayIterator::key
! 118: 3
! 119: NumericArrayIterator::next
! 120: NumericArrayIterator::valid(true)
! 121: NumericArrayIterator::current
! 122: NumericArrayIterator::key
! 123: 4
! 124: NumericArrayIterator::next
! 125: ===SEEKING===
! 126: NumericArrayIterator::__construct
! 127: SeekableNumericArrayIterator::seek(1)
! 128: NumericArrayIterator::valid(true)
! 129: NumericArrayIterator::current
! 130: NumericArrayIterator::key
! 131: 2
! 132: SeekableNumericArrayIterator::seek(2)
! 133: NumericArrayIterator::valid(true)
! 134: NumericArrayIterator::current
! 135: NumericArrayIterator::key
! 136: 3
! 137: SeekableNumericArrayIterator::seek(3)
! 138: NumericArrayIterator::valid(true)
! 139: NumericArrayIterator::current
! 140: NumericArrayIterator::key
! 141: 4
! 142: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>