Browse Source

[Finder] replaced ChainIterator with PHP built-in AppendIterator

Fabien Potencier 15 years ago
parent
commit
376ca78346

+ 2 - 2
src/Symfony/Components/Finder/Finder.php

@@ -288,10 +288,10 @@ class Finder
   {
     if (is_array($dir))
     {
-      $iterator = new Iterator\ChainIterator();
+      $iterator = new \AppendIterator();
       foreach ($dir as $d)
       {
-        $iterator->attach($this->searchInDirectory($d));
+        $iterator->append($this->searchInDirectory($d));
       }
 
       return $iterator;

+ 0 - 90
src/Symfony/Components/Finder/Iterator/ChainIterator.php

@@ -1,90 +0,0 @@
-<?php
-
-namespace Symfony\Components\Finder\Iterator;
-
-/*
- * This file is part of the Symfony framework.
- *
- * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-/**
- * ChainIterator iterates through several iterators, one at a time.
- *
- * @package    Symfony
- * @subpackage Components_Finder
- * @author     Fabien Potencier <fabien.potencier@symfony-project.com>
- */
-class ChainIterator implements \Iterator
-{
-  protected $iterators;
-  protected $current;
-  protected $cursor;
-
-  /**
-   * Constructor.
-   *
-   * @param Iterator[] $iterators An array of \Iterator instances
-   */
-  public function __construct(array $iterators = array())
-  {
-    $this->iterators = array();
-    foreach ($iterators as $iterator)
-    {
-      $this->attach($iterator);
-    }
-    $this->rewind();
-  }
-
-  public function attach(\Iterator $iterator)
-  {
-    $this->iterators[] = $iterator;
-  }
-
-  public function rewind()
-  {
-    $this->cursor = 0;
-    $this->current = 0;
-    foreach ($this->iterators as $iterator)
-    {
-      $iterator->rewind();
-    }
-  }
-
-  public function valid()
-  {
-    if ($this->current > count($this->iterators) - 1)
-    {
-      return false;
-    }
-
-    // still something for the current iterator?
-    if ($this->iterators[$this->current]->valid())
-    {
-      return true;
-    }
-
-    // go to the next one
-    ++$this->current;
-
-    return $this->valid();
-  }
-
-  public function next()
-  {
-    $this->iterators[$this->current]->next();
-  }
-
-  public function current()
-  {
-    return $this->iterators[$this->current]->current();
-  }
-
-  public function key()
-  {
-    return $this->cursor++;
-  }
-}

+ 0 - 30
tests/Symfony/Tests/Components/Finder/Iterator/ChainIteratorTest.php

@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Tests\Components\Finder\Iterator;
-
-use Symfony\Components\Finder\Iterator\ChainIterator;
-
-require_once __DIR__.'/IteratorTestCase.php';
-
-class ChainIteratorTest extends IteratorTestCase
-{
-  public function testAccept()
-  {
-    $inner1 = new Iterator(array('test.php', 'test.py'));
-    $inner2 = new Iterator(array());
-    $inner3 = new Iterator(array('foo.php'));
-
-    $iterator = new ChainIterator(array($inner1, $inner2, $inner3));
-
-    $this->assertIterator(array('test.php', 'test.py', 'foo.php'), $iterator);
-  }
-}