helly Tue Apr 27 14:15:00 2004 EDT Added files: /php-src/ext/spl/examples emptyiterator.inc infiniteiterator.inc Log: - More examples
http://cvs.php.net/co.php/php-src/ext/spl/examples/emptyiterator.inc?r=1.1&p=1 Index: php-src/ext/spl/examples/emptyiterator.inc +++ php-src/ext/spl/examples/emptyiterator.inc <?php /** * @brief An empty Iterator * @author Marcus Boerger * @version 1.0 * */ class EmptyIterator implements Iterator { function rewind() { // nothing to do } function valid() { return false; } function current() { throw new Exception('Accessing the value of an EmptyIterator'); } function key() { throw new Exception('Accessing the key of an EmptyIterator'); } function next() { // nothing to do } } ?> http://cvs.php.net/co.php/php-src/ext/spl/examples/infiniteiterator.inc?r=1.1&p=1 Index: php-src/ext/spl/examples/infiniteiterator.inc +++ php-src/ext/spl/examples/infiniteiterator.inc <?php /** * @brief An infinite Iterator * @author Marcus Boerger * @version 1.0 * * 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 implements Iterator { private $it; function __construct(Iterator $it) { $this->it = $it; } function getInnerIterator() { return $this->it; } function rewind() { $this->it->rewind(); } function valid() { return $this->it->valid(); } function current() { return $this->it->current(); } function key() { return $this->it->key(); } function next() { $this->it->next(); if (!$this->it->valid()) { $this->it->rewind(); } } } ?> -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php