<?php

/**
 * Előre tekintés
 */
$data = new ArrayObject(range(0, 9));
$iterator = new CachingIterator($data->getIterator(), CachingIterator::FULL_CACHE);
foreach ($iterator as $key => $value) {
    printf("Key %s => Value %s, Current %s, HasNext %b, Next %s\n", $key, $value, $iterator->current(), $iterator->hasNext(), $iterator->getInnerIterator()->current());
    var_dump($iterator->getCache());
}
<?php

$i = new ArrayIterator(array(1, 1, 1, 1, 1));
$i = new CachingIterator($i);
try {
    $i->getCache();
    echo "Should have caused an exception";
} catch (BadMethodCallException $e) {
    echo "Exception raised\n";
}
?>
===DONE===
Beispiel #3
0
<?php

$dwarves = [1 => 'Grumpy', 2 => 'Happy', 3 => 'Sleepy', 4 => 'Bashful', 5 => 'Sneezy', 6 => 'Dopey', 7 => 'Doc'];
$it = new CachingIterator(new ArrayIterator($dwarves), CachingIterator::FULL_CACHE);
foreach ($it as $v) {
}
$it->offsetUnset(4);
$it->offsetSet('Cal', 'Kathy');
$it[5] = 'Surly';
foreach ($it as $offset => $value) {
    echo 'Original: ' . $offset . ' == ' . $value . "\n";
}
foreach ($it->getCache() as $offset => $value) {
    echo 'Cache: ' . $offset . ' == ' . $value . "\n";
}
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $dwarves = [1 => 'Grumpy', 2 => 'Happy', 3 => 'Sleepy', 4 => 'Bashful', 5 => 'Sneezy', 6 => 'Dopey', 7 => 'Doc'];
     $output->writeln('Look ahead exampe. Build a CSV the hard way.');
     $dwarfIterator = new \ArrayIterator($dwarves);
     $cachingDwarfIterator = new \CachingIterator($dwarfIterator);
     $dwarfListOutput = '';
     foreach ($cachingDwarfIterator as $thisDwarf) {
         $dwarfListOutput .= $thisDwarf;
         if ($cachingDwarfIterator->hasNext()) {
             $dwarfListOutput .= ',';
         }
     }
     // foreach($dwarfIterator as $thisDwarf)
     $output->writeln($dwarfListOutput);
     $output->writeln(' ');
     $dwarfIterator = null;
     $cachingDwarfIterator = null;
     $output->writeln('Set the TOSTRING_USE_KEY flag');
     $dwarfIterator = new \ArrayIterator($dwarves);
     $cachingDwarfIterator = new \CachingIterator($dwarfIterator, \CachingIterator::TOSTRING_USE_KEY);
     foreach ($cachingDwarfIterator as $key => $thisDwarf) {
         var_dump((string) $cachingDwarfIterator);
         echo "\n";
     }
     // foreach($dwarfIterator as $thisDwarf)
     $dwarfIterator = null;
     $cachingDwarfIterator = null;
     $output->writeln(' ');
     $output->writeln('Setting the TOSTRING_USE_CURRENT flag');
     $dwarfIterator = new \ArrayIterator($dwarves);
     $cachingDwarfIterator = new \CachingIterator($dwarfIterator, \CachingIterator::TOSTRING_USE_CURRENT);
     foreach ($cachingDwarfIterator as $key => $thisDwarf) {
         var_dump((string) $cachingDwarfIterator);
         echo "\n";
     }
     // foreach($dwarfIterator as $thisDwarf)
     $output->writeln(' ');
     $output->writeln('Setting the TOSTRING_USE_INNER flag');
     $dwarfIterator = new CustomArrayIterator($dwarves);
     $cachingDwarfIterator = new \CachingIterator($dwarfIterator, \CachingIterator::TOSTRING_USE_INNER);
     foreach ($cachingDwarfIterator as $key => $thisDwarf) {
         var_dump((string) $cachingDwarfIterator);
         echo "\n";
     }
     // foreach($dwarfIterator as $thisDwarf)
     $output->writeln(' ');
     $output->writeln('Setting the FULL_CACHE flag');
     $dwarfIterator = new \ArrayIterator($dwarves);
     $cachingDwarfIterator = new CustomCachingIterator($dwarfIterator, \CachingIterator::FULL_CACHE);
     // Load the cache;
     foreach ($cachingDwarfIterator as $thisDwarf) {
     }
     $cachingDwarfIterator->removeBashful();
     $output->writeln(' ');
     $output->writeln('  Cached');
     foreach ($cachingDwarfIterator->getCache() as $key => $thisDwarf) {
         $output->writeln($key . " : " . $thisDwarf);
     }
     // foreach($dwarfIterator as $thisDwarf)
     $output->writeln(' ');
     $output->writeln('  This is the original iterator');
     foreach ($cachingDwarfIterator as $key => $thisDwarf) {
         $output->writeln($key . " - " . $thisDwarf);
     }
     // foreach($dwarfIterator as $thisDwarf)
     $output->writeln(' ');
     $output->writeln("  Now that we've modified an element, \n  let's modify an element");
     $dwarfIterator = new \ArrayIterator($dwarves);
     $cachingDwarfIterator = new \CachingIterator($dwarfIterator, \CachingIterator::FULL_CACHE);
     // Load the cache;
     foreach ($cachingDwarfIterator as $thisDwarf) {
     }
     $cachingDwarfIterator[5] = 'Surley';
     $output->writeln(' ');
     $output->writeln('  Now let\'s out the inner cache');
     foreach ($cachingDwarfIterator->getCache() as $key => $thisDwarf) {
         $output->writeln($key . " : " . $thisDwarf);
     }
     // foreach($dwarfIterator as $thisDwarf)
     $output->writeln("Done");
     return;
 }