/** @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; }
<?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; }
next(){parent::next();if(parent::valid()){$this->counter++;}}function rewind(){parent::rewind();$this->counter=parent::valid()?1:0;}function