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