Factory.php in Zircon Profile 8
File
vendor/phpunit/php-file-iterator/src/Factory.php
View source
<?php
class File_Iterator_Factory {
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;
}
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;
}
}
Classes
Name |
Description |
File_Iterator_Factory |
Factory Method implementation that creates a File_Iterator that operates on
an AppendIterator that contains an RecursiveDirectoryIterator for each given
path. |