PHPackages                             org\_heigl/filefinder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. org\_heigl/filefinder

ActiveLibrary[File &amp; Storage](/categories/file-storage)

org\_heigl/filefinder
=====================

Generate a filtered filelist from one or more folders

1.4.0(7y ago)32.8k2[1 PRs](https://github.com/heiglandreas/OrgHeiglFileFinder/pulls)1MITPHPPHP ^7.1CI failing

Since Nov 5Pushed 5y ago1 watchersCompare

[ Source](https://github.com/heiglandreas/OrgHeiglFileFinder)[ Packagist](https://packagist.org/packages/org_heigl/filefinder)[ Docs](https://github.com/heiglandreas/OrgHeiglFileFinder)[ RSS](/packages/org-heigl-filefinder/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (4)Versions (12)Used By (1)

Org\_Heigl\\FileFinder
======================

[](#org_heiglfilefinder)

[![Build Status](https://camo.githubusercontent.com/70fef989cab09387701cb849acd347a41acc63771e027583e15ad72fd9bfa896/68747470733a2f2f7472617669732d63692e6f72672f686569676c616e64726561732f4f7267486569676c46696c6546696e6465722e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/heiglandreas/OrgHeiglFileFinder)[![Code Climate](https://camo.githubusercontent.com/77f1c4272d0ecabbd2f3538677866290b1c64cace950970e38c898d271efeab8/68747470733a2f2f636f6465636c696d6174652e636f6d2f6769746875622f686569676c616e64726561732f4f7267486569676c46696c6546696e6465722f6261646765732f6770612e737667)](https://codeclimate.com/github/heiglandreas/OrgHeiglFileFinder)[![Test Coverage](https://camo.githubusercontent.com/cd02768b7ad44365a1cf8236da3c017f22ec5e5b129b49a19f7facda240ff4ca/68747470733a2f2f636f6465636c696d6174652e636f6d2f6769746875622f686569676c616e64726561732f4f7267486569676c46696c6546696e6465722f6261646765732f636f7665726167652e737667)](https://codeclimate.com/github/heiglandreas/OrgHeiglFileFinder)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/32e557d0c4454fec01a806af65e993efb2a7937f3bd6ce811d4579b2d0d83321/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f686569676c616e64726561732f4f7267486569676c46696c6546696e6465722f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/heiglandreas/OrgHeiglFileFinder/?branch=master)

This library allows to iterate through a number of folders and filter the list of files. The files are returned in a filelist-object.

Installation
------------

[](#installation)

Org\_Heigl\\FileFinder is installed via composer. Call `composer require org_heigl/filefinder` from the commandline in your project.

Alternatively you can include the following line in your `composer.json` inside the `require`-section:

```
"org_heigl/filefinder" : "stable"

```

Usage
-----

[](#usage)

Simplest usage would be to add a filter to the FileFinder as well as a directory.

```
$finder = new \Org_Heigl\FileFinder\FileFinder();
$finder->addFilter(new \Org_Heigl\FileFinder\Filter\FileExtension('jpg'));
$finder->addDirectory($dir);
$list = $finder->find();
// $list will be an \Org_Heigl\FileFinder\FileList-Object containing all Files with the extension 'jpg' inside ```$dir```
```

You can also set your own `FileList`-Object as long as it implements `\Org_Heigl\FileFinder\FileListInterface`. That would then look like this:

```
$finder = new \Org_Heigl\FileFinder\FileFinder();
$finder->addFilter(new \Org_Heigl\FileFinder\Filter\FileExtension('jpg'));
$finder->addDirectory($dir);
$finder->setFileList(new MyPrettyFileList())
$list = $finder->find();
// $list will be the MyPrettyFileList-Object containing all Files with the extension 'jpg' inside ```$dir```
```

You can also get a mapping of classname to filename for all classes implementing `\Iterator` underneath the directory `$dir` using this snippet:

```
$finder = new \Org_Heigl\FileFinder\FileFinder();
$finder->addFilter(new \Org_Heigl\FileFinder\Filter\FileExtension('php'));
$finder->addFilter(new \Org_Heigl\FileFinder\Filter\ClassIsInstanceof('\Iterator'));
$finder->setFileList(new \Org_Heigl\FileFinder\ClassMapList());
$finder->addDirectory($dir);
$list = $finder->find();
// $list now contains the classname as key and the filepath as value
```

The directories added with the `FileList::addDirectory()`-method will be recursively checked.

The filters have to implement `\Org_Heigl\FileFinder\FilterInterface`. Therefore you can add your own filters very easily.

The default `FileList`-implementation also contains a `sort`-method that allows sorting the filelist before using it. Just provide an implementation of the `SortInterface` as argument like this:

```
$finder = new \Org_Heigl\FileFinder\FileFinder();
$finder->addDirectory($dir);
$list = $finder->find();
$list->sort(new \Org_Heigl\FileFinder\Sorter\MTime());
// $list now is sorted by MTime ascending.
```

Contains
--------

[](#contains)

Currently the library contains the following filters:

- **FileExtension** - A filter to check whether the files extension is one of a given number of extensions. The list of extensions if given to the constructor like so: `new FileExtension(array('foo', 'bar'))`.
- **FileStart** - A filter that checks whether the files content starts with the given string. You could use it like this: `new FileStart('
