1 changed files with 123 additions and 0 deletions
@ -0,0 +1,123 @@ |
|||
--TEST-- |
|||
SPL: LimitIterator and backward seeking |
|||
--SKIPIF-- |
|||
<?php if (!extension_loaded("spl")) print "skip"; ?> |
|||
--FILE-- |
|||
<?php |
|||
|
|||
class NumericArrayIterator implements Iterator |
|||
{ |
|||
protected $a; |
|||
protected $i = 0; |
|||
|
|||
public function __construct($a) |
|||
{ |
|||
echo __METHOD__ . "\n"; |
|||
$this->a = $a; |
|||
} |
|||
|
|||
public function valid() |
|||
{ |
|||
echo __METHOD__ . "\n"; |
|||
return $this->i < count($this->a); |
|||
} |
|||
|
|||
public function rewind() |
|||
{ |
|||
echo __METHOD__ . "\n"; |
|||
$this->i = 0; |
|||
} |
|||
|
|||
public function key() |
|||
{ |
|||
echo __METHOD__ . "\n"; |
|||
return $this->i; |
|||
} |
|||
|
|||
public function current() |
|||
{ |
|||
echo __METHOD__ . "\n"; |
|||
return $this->a[$this->i]; |
|||
} |
|||
|
|||
public function next() |
|||
{ |
|||
echo __METHOD__ . "\n"; |
|||
$this->i++; |
|||
} |
|||
} |
|||
|
|||
$it = new LimitIterator(new NumericArrayIterator(array(12, 25, 42, 56))); |
|||
|
|||
foreach($it as $k => $v) |
|||
{ |
|||
var_dump($k); |
|||
var_dump($v); |
|||
} |
|||
|
|||
echo "===SEEK===\n"; |
|||
|
|||
$it->seek(2); |
|||
|
|||
echo "===LOOP===\n"; |
|||
|
|||
foreach(new NoRewindIterator($it) as $k => $v) |
|||
{ |
|||
var_dump($k); |
|||
var_dump($v); |
|||
} |
|||
|
|||
?> |
|||
===DONE=== |
|||
<?php exit(0); ?> |
|||
--EXPECT-- |
|||
NumericArrayIterator::__construct |
|||
NumericArrayIterator::rewind |
|||
NumericArrayIterator::valid |
|||
NumericArrayIterator::valid |
|||
NumericArrayIterator::current |
|||
NumericArrayIterator::key |
|||
int(0) |
|||
int(12) |
|||
NumericArrayIterator::next |
|||
NumericArrayIterator::valid |
|||
NumericArrayIterator::current |
|||
NumericArrayIterator::key |
|||
int(1) |
|||
int(25) |
|||
NumericArrayIterator::next |
|||
NumericArrayIterator::valid |
|||
NumericArrayIterator::current |
|||
NumericArrayIterator::key |
|||
int(2) |
|||
int(42) |
|||
NumericArrayIterator::next |
|||
NumericArrayIterator::valid |
|||
NumericArrayIterator::current |
|||
NumericArrayIterator::key |
|||
int(3) |
|||
int(56) |
|||
NumericArrayIterator::next |
|||
NumericArrayIterator::valid |
|||
===SEEK=== |
|||
NumericArrayIterator::rewind |
|||
NumericArrayIterator::valid |
|||
NumericArrayIterator::next |
|||
NumericArrayIterator::valid |
|||
NumericArrayIterator::next |
|||
NumericArrayIterator::valid |
|||
NumericArrayIterator::valid |
|||
NumericArrayIterator::current |
|||
NumericArrayIterator::key |
|||
===LOOP=== |
|||
int(2) |
|||
int(42) |
|||
NumericArrayIterator::next |
|||
NumericArrayIterator::valid |
|||
NumericArrayIterator::current |
|||
NumericArrayIterator::key |
|||
int(3) |
|||
int(56) |
|||
NumericArrayIterator::next |
|||
NumericArrayIterator::valid |
|||
===DONE=== |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue