helly           Sun Apr 25 09:06:15 2004 EDT

  Added files:                 
    /php-src/ext/spl/examples   appenditerator.inc 

  Modified files:              
    /php-src/ext/spl/examples   findfile.inc findfile.php 
  Log:
  Add new iterator example AppendIterator and use it in findfile.php example.
  # The initial idea came from a request by Sebastian
  
  
http://cvs.php.net/diff.php/php-src/ext/spl/examples/findfile.inc?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/spl/examples/findfile.inc
diff -u php-src/ext/spl/examples/findfile.inc:1.1 
php-src/ext/spl/examples/findfile.inc:1.2
--- php-src/ext/spl/examples/findfile.inc:1.1   Sun Jan 25 08:03:24 2004
+++ php-src/ext/spl/examples/findfile.inc       Sun Apr 25 09:06:15 2004
@@ -13,7 +13,16 @@
        function __construct($path, $file)
        {
                $this->file = $file;
-               parent::__construct(new RecursiveIteratorIterator(new 
RecursiveDirectoryIterator($path)));
+               $list = split(';', $path);
+               if (count($list) <= 1) {
+                       parent::__construct(new RecursiveIteratorIterator(new 
RecursiveDirectoryIterator($path)));
+               } else {
+                       $it = new AppendIterator();
+                       foreach($list as $path) {
+                               $it->append(new RecursiveIteratorIterator(new 
RecursiveDirectoryIterator($path)));
+                       }
+                       parent::__construct($it);
+               }
        }
 
        function accept()
http://cvs.php.net/diff.php/php-src/ext/spl/examples/findfile.php?r1=1.5&r2=1.6&ty=u
Index: php-src/ext/spl/examples/findfile.php
diff -u php-src/ext/spl/examples/findfile.php:1.5 
php-src/ext/spl/examples/findfile.php:1.6
--- php-src/ext/spl/examples/findfile.php:1.5   Sun Jan 25 08:03:24 2004
+++ php-src/ext/spl/examples/findfile.php       Sun Apr 25 09:06:15 2004
@@ -4,15 +4,16 @@
  *
  * Usage: php findfile.php <path> <name>
  *
- * <path>  Path to search in.
+ * <path>  Path to search in. You can specify multiple paths by separating
+ *         them with ';'.
  * <name>  Filename to look for.
  *
- * (c) Marcus Boerger, 2003
+ * (c) Marcus Boerger, 2003 - 2004
  */
 
 if ($argc < 3) {
        echo <<<EOF
-Usage: php findfile.php <file> <name>
+Usage: php findfile.php <path> <name>
 
 Find a specific file by name.
 

http://cvs.php.net/co.php/php-src/ext/spl/examples/appenditerator.inc?r=1.1&p=1
Index: php-src/ext/spl/examples/appenditerator.inc
+++ php-src/ext/spl/examples/appenditerator.inc
<?php

/**
 * @brief   Iterator that iterates over several iterators one after the other
 * @author  Marcus Boerger
 * @version 1.0
 *
 */
class AppendIterator implements Iterator
{
        protected $iterators;

        function __construct()
        {
                $this->iterators = new ArrayIterator();
        }
        
        function append(Iterator $it)
        {
                $this->iterators->append($it);
        }

        function getInnerIterator()
        {
                return $this->iterators->current();
        }

        function rewind()
        {
                $this->iterators->rewind();
        }

        function valid()
        {
                return $this->iterators->valid() && $this->getInnerIterator()->valid();
        }

        function current()
        {
                return $this->getInnerIterator()->current();
        }

        function key()
        {
                return $this->getInnerIterator()->key();
        }
        
        function next()
        {
                while($this->iterators->valid()) {
                        $this->getInnerIterator()->next();
                        if ($this->valid()) {
                                return;
                        }
                        $this->iterators->next();
                }
        }
}

?>

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to