This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/src/Symfony/Component/Finder
Fabien Potencier 107765142e Merge branch '2.8' into 3.0
* 2.8:
  fixed test
  [Request] Ignore invalid IP addresses sent by proxies
  [EventDispatcher] TraceableEventDispatcher resets listener priorities
  Throw for missing container extensions
  [TwigBridge] add missing unit tests (AppVariable)
  Able to load big xml files with DomCrawler
  fixed typo
  [Form] Fix constraints could be null if not set
  [Finder] Check PHP version before applying a workaround for a PHP bug
  fixed CS
  add defaultNull to version
  sort bundles in config:dump-reference command
  Fixer findings.
  Profiler CSS position conflicts with JS detection
  [Translation][Writer] avoid calling setBackup if the dumper is not an instance of FileDumper.
  [FrameworkBundle] Compute the kernel root hash only one time
2016-01-25 10:56:57 +01:00
..
Comparator
Exception
Iterator Merge branch '2.8' into 3.0 2016-01-25 10:56:57 +01:00
Tests Merge branch '2.8' into 3.0 2016-01-25 10:56:57 +01:00
.gitignore
CHANGELOG.md
composer.json Merge branch '2.8' 2015-10-30 16:35:59 -07:00
Finder.php
Glob.php
LICENSE Update copyright year 2016-01-01 23:53:47 -03:00
phpunit.xml.dist Add missing exclusions from phpunit.xml.dist 2015-11-18 09:19:46 +01:00
README.md
SplFileInfo.php Improve the phpdoc of SplFileInfo methods 2016-01-19 13:10:23 +01:00

Finder Component

Finder finds files and directories via an intuitive fluent interface.

use Symfony\Component\Finder\Finder;

$finder = new Finder();

$iterator = $finder
  ->files()
  ->name('*.php')
  ->depth(0)
  ->size('>= 1K')
  ->in(__DIR__);

foreach ($iterator as $file) {
    print $file->getRealpath()."\n";
}

The iterator returns instances of Symfony\Component\Finder\SplFileInfo\SplFileInfo. Besides the build-in methods inherited from \SplFileInfo (getPerms(), getSize(), ...), you can also use getRelativePath() and getRelativePathname(). Read the official documentation for more information.

But you can also use it to find files stored remotely like in this example where we are looking for files on Amazon S3:

$s3 = new \Zend_Service_Amazon_S3($key, $secret);
$s3->registerStreamWrapper("s3");

$finder = new Finder();
$finder->name('photos*')->size('< 100K')->date('since 1 hour ago');
foreach ($finder->in('s3://bucket-name') as $file) {
    print $file->getFilename()."\n";
}

Resources

You can run the unit tests with the following command:

$ cd path/to/Symfony/Component/Finder/
$ composer install
$ phpunit