Finder
class Finder implements IteratorAggregate, Countable
Finder allows to build rules to find files and directories.
It is a thin wrapper around several specialized iterator classes.
All rules may be invoked several times.
All methods return the current Finder object to allow easy chaining:
$finder = Finder::create()->files()->name('*.php')->in(DIR);
Constants
IGNORE_VCS_FILES | |
IGNORE_DOT_FILES |
Methods
__construct() | ||
static Finder | create() Creates a new Finder. | |
$this | addAdapter(AdapterInterface $adapter, int $priority) Registers a finder engine implementation. | |
$this | useBestAdapter() Sets the selected adapter to the best one according to the current platform the code is run on. | |
$this | setAdapter(string $name) Selects the adapter to use. | |
$this | removeAdapters() Removes all adapters registered in the finder. | |
AdapterInterface[] | getAdapters() Returns registered adapters ordered by priority without extra information. | |
$this | directories() Restricts the matching to directories only. | |
$this | files() Restricts the matching to files only. | |
$this | depth(string|int $level) Adds tests for the directory depth. | |
$this | date(string $date) Adds tests for file dates (last modified). | |
$this | name(string $pattern) Adds rules that files must match. | |
$this | notName(string $pattern) Adds rules that files must not match. | |
$this | contains(string $pattern) Adds tests that file contents must match. | |
$this | notContains(string $pattern) Adds tests that file contents must not match. | |
$this | path(string $pattern) Adds rules that filenames must match. | |
$this | notPath(string $pattern) Adds rules that filenames must not match. | |
$this | size(string|int $size) Adds tests for file sizes. | |
$this | exclude(string|array $dirs) Excludes directories. | |
$this | ignoreDotFiles(bool $ignoreDotFiles) Excludes "hidden" directories and files (starting with a dot). | |
$this | ignoreVCS(bool $ignoreVCS) Forces the finder to ignore version control directories. | |
static | addVCSPattern(string|string[] $pattern) Adds VCS patterns. | |
$this | sort(Closure $closure) Sorts files and directories by an anonymous function. | |
$this | sortByName() Sorts files and directories by name. | |
$this | sortByType() Sorts files and directories by type (directories before files), then by name. | |
$this | sortByAccessedTime() Sorts files and directories by the last accessed time. | |
$this | sortByChangedTime() Sorts files and directories by the last inode changed time. | |
$this | sortByModifiedTime() Sorts files and directories by the last modified time. | |
$this | filter(Closure $closure) Filters the iterator with an anonymous function. | |
$this | followLinks() Forces the following of symlinks. | |
$this | ignoreUnreadableDirs(bool $ignore = true) Tells finder to ignore unreadable directories. | |
$this | in(string|array $dirs) Searches files and directories which match defined rules. | |
Iterator|SplFileInfo[] | getIterator() Returns an Iterator for the current Finder configuration. | |
$this | append(mixed $iterator) Appends an existing set of files/directories to the finder. | |
int | count() Counts all the results collected by the iterators. |
Details
__construct()
static Finder create()
Creates a new Finder.
Return Value
Finder |
$this addAdapter(AdapterInterface $adapter, int $priority)
Registers a finder engine implementation.
Parameters
AdapterInterface | $adapter | An adapter instance |
int | $priority | Highest is selected first |
Return Value
$this |
$this useBestAdapter()
Sets the selected adapter to the best one according to the current platform the code is run on.
Return Value
$this |
$this setAdapter(string $name)
Selects the adapter to use.
Parameters
string | $name |
Return Value
$this |
Exceptions
InvalidArgumentException |
$this removeAdapters()
Removes all adapters registered in the finder.
Return Value
$this |
AdapterInterface[] getAdapters()
Returns registered adapters ordered by priority without extra information.
Return Value
AdapterInterface[] |
$this directories()
Restricts the matching to directories only.
Return Value
$this |
$this files()
Restricts the matching to files only.
Return Value
$this |
$this depth(string|int $level)
Adds tests for the directory depth.
Usage:
$finder->depth('> 1') // the Finder will start matching at level 1. $finder->depth('< 3') // the Finder will descend at most 3 levels of directories below the starting point.
Parameters
string|int | $level | The depth level expression |
Return Value
$this |
See also
DepthRangeFilterIterator | |
NumberComparator |
$this date(string $date)
Adds tests for file dates (last modified).
The date must be something that strtotime() is able to parse:
$finder->date('since yesterday'); $finder->date('until 2 days ago'); $finder->date('> now - 2 hours'); $finder->date('>= 2005-10-15');
Parameters
string | $date | A date range string |
Return Value
$this |
See also
strtotime | |
DateRangeFilterIterator | |
DateComparator |
$this name(string $pattern)
Adds rules that files must match.
You can use patterns (delimited with / sign), globs or simple strings.
$finder->name('*.php') $finder->name('/.php$/') // same as above $finder->name('test.php')
Parameters
string | $pattern | A pattern (a regexp, a glob, or a string) |
Return Value
$this |
See also
FilenameFilterIterator |
$this notName(string $pattern)
Adds rules that files must not match.
Parameters
string | $pattern | A pattern (a regexp, a glob, or a string) |
Return Value
$this |
See also
FilenameFilterIterator |
$this contains(string $pattern)
Adds tests that file contents must match.
Strings or PCRE patterns can be used:
$finder->contains('Lorem ipsum') $finder->contains('/Lorem ipsum/i')
Parameters
string | $pattern | A pattern (string or regexp) |
Return Value
$this |
See also
FilecontentFilterIterator |
$this notContains(string $pattern)
Adds tests that file contents must not match.
Strings or PCRE patterns can be used:
$finder->notContains('Lorem ipsum') $finder->notContains('/Lorem ipsum/i')
Parameters
string | $pattern | A pattern (string or regexp) |
Return Value
$this |
See also
FilecontentFilterIterator |
$this path(string $pattern)
Adds rules that filenames must match.
You can use patterns (delimited with / sign) or simple strings.
$finder->path('some/special/dir') $finder->path('/some\/special\/dir/') // same as above
Use only / as dirname separator.
Parameters
string | $pattern | A pattern (a regexp or a string) |
Return Value
$this |
See also
FilenameFilterIterator |
$this notPath(string $pattern)
Adds rules that filenames must not match.
You can use patterns (delimited with / sign) or simple strings.
$finder->notPath('some/special/dir') $finder->notPath('/some\/special\/dir/') // same as above
Use only / as dirname separator.
Parameters
string | $pattern | A pattern (a regexp or a string) |
Return Value
$this |
See also
FilenameFilterIterator |
$this size(string|int $size)
Adds tests for file sizes.
$finder->size('> 10K'); $finder->size('<= 1Ki'); $finder->size(4);
Parameters
string|int | $size | A size range string or an integer |
Return Value
$this |
See also
SizeRangeFilterIterator | |
NumberComparator |
$this exclude(string|array $dirs)
Excludes directories.
Parameters
string|array | $dirs | A directory path or an array of directories |
Return Value
$this |
See also
ExcludeDirectoryFilterIterator |
$this ignoreDotFiles(bool $ignoreDotFiles)
Excludes "hidden" directories and files (starting with a dot).
Parameters
bool | $ignoreDotFiles | Whether to exclude "hidden" files or not |
Return Value
$this |
See also
ExcludeDirectoryFilterIterator |
$this ignoreVCS(bool $ignoreVCS)
Forces the finder to ignore version control directories.
Parameters
bool | $ignoreVCS | Whether to exclude VCS files or not |
Return Value
$this |
See also
ExcludeDirectoryFilterIterator |
static addVCSPattern(string|string[] $pattern)
Adds VCS patterns.
Parameters
string|string[] | $pattern | VCS patterns to ignore |
See also
ignoreVCS() |
$this sort(Closure $closure)
Sorts files and directories by an anonymous function.
The anonymous function receives two \SplFileInfo instances to compare.
This can be slow as all the matching files and directories must be retrieved for comparison.
Parameters
Closure | $closure |
Return Value
$this |
See also
SortableIterator |
$this sortByName()
Sorts files and directories by name.
This can be slow as all the matching files and directories must be retrieved for comparison.
Return Value
$this |
See also
SortableIterator |
$this sortByType()
Sorts files and directories by type (directories before files), then by name.
This can be slow as all the matching files and directories must be retrieved for comparison.
Return Value
$this |
See also
SortableIterator |
$this sortByAccessedTime()
Sorts files and directories by the last accessed time.
This is the time that the file was last accessed, read or written to.
This can be slow as all the matching files and directories must be retrieved for comparison.
Return Value
$this |
See also
SortableIterator |
$this sortByChangedTime()
Sorts files and directories by the last inode changed time.
This is the time that the inode information was last modified (permissions, owner, group or other metadata).
On Windows, since inode is not available, changed time is actually the file creation time.
This can be slow as all the matching files and directories must be retrieved for comparison.
Return Value
$this |
See also
SortableIterator |
$this sortByModifiedTime()
Sorts files and directories by the last modified time.
This is the last time the actual contents of the file were last modified.
This can be slow as all the matching files and directories must be retrieved for comparison.
Return Value
$this |
See also
SortableIterator |
$this filter(Closure $closure)
Filters the iterator with an anonymous function.
The anonymous function receives a \SplFileInfo and must return false to remove files.
Parameters
Closure | $closure |
Return Value
$this |
See also
CustomFilterIterator |
$this followLinks()
Forces the following of symlinks.
Return Value
$this |
$this ignoreUnreadableDirs(bool $ignore = true)
Tells finder to ignore unreadable directories.
By default, scanning unreadable directories content throws an AccessDeniedException.
Parameters
bool | $ignore |
Return Value
$this |
$this in(string|array $dirs)
Searches files and directories which match defined rules.
Parameters
string|array | $dirs | A directory path or an array of directories |
Return Value
$this |
Exceptions
InvalidArgumentException | if one of the directories does not exist |
Iterator|SplFileInfo[] getIterator()
Returns an Iterator for the current Finder configuration.
This method implements the IteratorAggregate interface.
Return Value
Iterator|SplFileInfo[] | An iterator |
Exceptions
LogicException | if the in() method has not been called |
$this append(mixed $iterator)
Appends an existing set of files/directories to the finder.
The set can be another Finder, an Iterator, an IteratorAggregate, or even a plain array.
Parameters
mixed | $iterator |
Return Value
$this |
Exceptions
InvalidArgumentException | when the given argument is not iterable |
int count()
Counts all the results collected by the iterators.
Return Value
int |
© 2004–2017 Fabien Potencier
Licensed under the MIT License.
http://api.symfony.com/2.7/Symfony/Component/Finder/Finder.html