public function rewind() { parent::rewind(); if ($this->valid()) { $this->currentResult = $this->handleItem($this->current()); } if ($this->hasNext()) { $this->nextResult = $this->handleItem($this->getInnerIterator()->current()); } }
/** @test */ public function testMainFunctionality() { $count = 0; $it = new CachingIterator(new MapIterator(new ArrayIterator(range(0, 10)), function ($i) use(&$count) { $count += 1; return $i; })); $it->rewind(); $this->assertEquals(0, $count); $it->valid(); $this->assertEquals(0, $it->current()); $it->valid(); $it->next(); $this->assertEquals(1, $it->current()); $this->assertEquals(1, $it->current()); $this->assertEquals(1, $it->current()); $it->valid(); $it->next(); $this->assertEquals(2, $it->current()); $this->assertEquals(3, $count); }
/** * Rewinds the Iterator. * @return void */ public function rewind() { parent::rewind(); $this->counter = parent::valid() ? 1 : 0; }
$it[3] = 'bar'; $it['baz'] = '25'; var_dump($it[2]); var_dump($it[3]); var_dump($it['baz']); unset($it[0]); unset($it[2]); unset($it['baz']); var_dump(isset($it[0])); // unset var_dump(isset($it[1])); // still present var_dump(isset($it[2])); // unset var_dump(isset($it[3])); // still present var_dump(isset($it['baz'])); echo "===REWIND===\n"; $it->rewind(); // cleans and reads first element var_dump(isset($it[0])); // pre-fetched var_dump(isset($it[1])); // deleted var_dump(isset($it[2])); // unset var_dump(isset($it[3])); // deleted ?> ===DONE===
<?php $data = array('Mela', 'Pera', 'Kiwi', 'Banana', 'Pompelmo'); $it = new ArrayIterator($data); $iterator = new CachingIterator($it); for ($iterator->rewind(); $iterator->valid(); $iterator->next()) { echo $iterator, PHP_EOL; }
public function rewind() { $this->isCurrentChildrenCacheValid = false; return parent::rewind(); }
next(){parent::next();if(parent::valid()){$this->counter++;}}function rewind(){parent::rewind();$this->counter=parent::valid()?1:0;}function
function rewind() { $this->hasChildren = false; $this->getChildren = NULL; parent::rewind(); }
<?php $a = array("some", "blah"); $i = new ArrayIterator($a); $ci = new CachingIterator($i); $ci->rewind(); ?> ===DONE===