You are here

class File_Iterator_Factory in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 vendor/phpunit/php-file-iterator/src/Factory.php \File_Iterator_Factory

Factory Method implementation that creates a File_Iterator that operates on an AppendIterator that contains an RecursiveDirectoryIterator for each given path.

@since Class available since Release 1.1.0

Hierarchy

Expanded class hierarchy of File_Iterator_Factory

File

vendor/phpunit/php-file-iterator/src/Factory.php, line 18

View source
class File_Iterator_Factory {

  /**
   * @param  array|string   $paths
   * @param  array|string   $suffixes
   * @param  array|string   $prefixes
   * @param  array          $exclude
   * @return AppendIterator
   */
  public function getFileIterator($paths, $suffixes = '', $prefixes = '', array $exclude = array()) {
    if (is_string($paths)) {
      $paths = array(
        $paths,
      );
    }
    $paths = $this
      ->getPathsAfterResolvingWildcards($paths);
    $exclude = $this
      ->getPathsAfterResolvingWildcards($exclude);
    if (is_string($prefixes)) {
      if ($prefixes != '') {
        $prefixes = array(
          $prefixes,
        );
      }
      else {
        $prefixes = array();
      }
    }
    if (is_string($suffixes)) {
      if ($suffixes != '') {
        $suffixes = array(
          $suffixes,
        );
      }
      else {
        $suffixes = array();
      }
    }
    $iterator = new AppendIterator();
    foreach ($paths as $path) {
      if (is_dir($path)) {
        $iterator
          ->append(new File_Iterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::FOLLOW_SYMLINKS)), $suffixes, $prefixes, $exclude, $path));
      }
    }
    return $iterator;
  }

  /**
   * @param  array $paths
   * @return array
   */
  protected function getPathsAfterResolvingWildcards(array $paths) {
    $_paths = array();
    foreach ($paths as $path) {
      if ($locals = glob($path, GLOB_ONLYDIR)) {
        $_paths = array_merge($_paths, $locals);
      }
      else {
        $_paths[] = $path;
      }
    }
    return $_paths;
  }

}

Members