Commit | Line | Data |
---|---|---|
7f254ad8 AE |
1 | <?php |
2 | ||
3 | /* | |
4 | * This file is part of the Symfony package. | |
5 | * | |
6 | * (c) Fabien Potencier <fabien@symfony.com> | |
7 | * | |
8 | * For the full copyright and license information, please view the LICENSE | |
9 | * file that was distributed with this source code. | |
10 | */ | |
11 | ||
12 | namespace Symfony\Component\Finder\Iterator; | |
13 | ||
14 | /** | |
15 | * DepthRangeFilterIterator limits the directory depth. | |
16 | * | |
17 | * @author Fabien Potencier <fabien@symfony.com> | |
18 | */ | |
19 | class DepthRangeFilterIterator extends FilterIterator | |
20 | { | |
21 | private $minDepth = 0; | |
22 | ||
23 | /** | |
24 | * Constructor. | |
25 | * | |
26 | * @param \RecursiveIteratorIterator $iterator The Iterator to filter | |
27 | * @param int $minDepth The min depth | |
28 | * @param int $maxDepth The max depth | |
29 | */ | |
30 | public function __construct(\RecursiveIteratorIterator $iterator, $minDepth = 0, $maxDepth = PHP_INT_MAX) | |
31 | { | |
32 | $this->minDepth = $minDepth; | |
33 | $iterator->setMaxDepth(PHP_INT_MAX === $maxDepth ? -1 : $maxDepth); | |
34 | ||
35 | parent::__construct($iterator); | |
36 | } | |
37 | ||
38 | /** | |
39 | * Filters the iterator values. | |
40 | * | |
41 | * @return bool true if the value should be kept, false otherwise | |
42 | */ | |
43 | public function accept() | |
44 | { | |
45 | return $this->getInnerIterator()->getDepth() >= $this->minDepth; | |
46 | } | |
47 | } |