4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\Finder\Iterator;
15 * CustomFilterIterator filters files by applying anonymous functions.
17 * The anonymous function receives a \SplFileInfo and must return false
20 * @author Fabien Potencier <fabien@symfony.com>
22 class CustomFilterIterator extends FilterIterator
24 private $filters = array();
27 * @param \Iterator $iterator The Iterator to filter
28 * @param callable[] $filters An array of PHP callbacks
30 * @throws \InvalidArgumentException
32 public function __construct(\Iterator $iterator, array $filters)
34 foreach ($filters as $filter) {
35 if (!\is_callable($filter)) {
36 throw new \InvalidArgumentException('Invalid PHP callback.');
39 $this->filters = $filters;
41 parent::__construct($iterator);
45 * Filters the iterator values.
47 * @return bool true if the value should be kept, false otherwise
49 public function accept()
51 $fileinfo = $this->current();
53 foreach ($this->filters as $filter) {
54 if (false === \call_user_func($filter, $fileinfo)) {