diff options
Diffstat (limited to 'ext/spl/internal/infiniteiterator.inc')
-rw-r--r-- | ext/spl/internal/infiniteiterator.inc | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/ext/spl/internal/infiniteiterator.inc b/ext/spl/internal/infiniteiterator.inc new file mode 100644 index 0000000..04d7827 --- /dev/null +++ b/ext/spl/internal/infiniteiterator.inc @@ -0,0 +1,48 @@ +<?php + +/** @file infiniteiterator.inc + * @ingroup SPL + * @brief class InfiniteIterator + * @author Marcus Boerger + * @date 2003 - 2009 + * + * SPL - Standard PHP Library + */ + +/** @ingroup SPL + * @brief An infinite Iterator + * @author Marcus Boerger + * @version 1.1 + * @since PHP 5.1 + * + * This Iterator takes another Iterator and infinitvely iterates it by + * rewinding it when its end is reached. + * + * \note Even an InfiniteIterator stops if its inner Iterator is empty. + * + \verbatim + $it = new ArrayIterator(array(1,2,3)); + $infinite = new InfiniteIterator($it); + $limit = new LimitIterator($infinite, 0, 5); + foreach($limit as $val=>$key) + { + echo "$val=>$key\n"; + } + \endverbatim + */ +class InfiniteIterator extends IteratorIterator +{ + /** Move the inner Iterator forward to its next element or rewind it. + * @return void + */ + function next() + { + $this->getInnerIterator()->next(); + if (!$this->getInnerIterator()->valid()) + { + $this->getInnerIterator()->rewind(); + } + } +} + +?>
\ No newline at end of file |