infiniteiterator.inc 1003 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. /** @file infiniteiterator.inc
  3. * @ingroup SPL
  4. * @brief class InfiniteIterator
  5. * @author Marcus Boerger
  6. * @date 2003 - 2009
  7. *
  8. * SPL - Standard PHP Library
  9. */
  10. /** @ingroup SPL
  11. * @brief An infinite Iterator
  12. * @author Marcus Boerger
  13. * @version 1.1
  14. * @since PHP 5.1
  15. *
  16. * This Iterator takes another Iterator and infinitvely iterates it by
  17. * rewinding it when its end is reached.
  18. *
  19. * \note Even an InfiniteIterator stops if its inner Iterator is empty.
  20. *
  21. \verbatim
  22. $it = new ArrayIterator(array(1,2,3));
  23. $infinite = new InfiniteIterator($it);
  24. $limit = new LimitIterator($infinite, 0, 5);
  25. foreach($limit as $val=>$key)
  26. {
  27. echo "$val=>$key\n";
  28. }
  29. \endverbatim
  30. */
  31. class InfiniteIterator extends IteratorIterator
  32. {
  33. /** Move the inner Iterator forward to its next element or rewind it.
  34. * @return void
  35. */
  36. function next()
  37. {
  38. $this->getInnerIterator()->next();
  39. if (!$this->getInnerIterator()->valid())
  40. {
  41. $this->getInnerIterator()->rewind();
  42. }
  43. }
  44. }
  45. ?>