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