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
12namespace Symfony\Component\Finder\Iterator;
13
14/**
15 * DepthRangeFilterIterator limits the directory depth.
16 *
17 * @author Fabien Potencier <fabien@symfony.com>
18 */
19class DepthRangeFilterIterator extends \FilterIterator
20{
21    private $minDepth = 0;
22
23    /**
24     * @param \RecursiveIteratorIterator $iterator The Iterator to filter
25     * @param int                        $minDepth The min depth
26     * @param int                        $maxDepth The max depth
27     */
28    public function __construct(\RecursiveIteratorIterator $iterator, int $minDepth = 0, int $maxDepth = PHP_INT_MAX)
29    {
30        $this->minDepth = $minDepth;
31        $iterator->setMaxDepth(PHP_INT_MAX === $maxDepth ? -1 : $maxDepth);
32
33        parent::__construct($iterator);
34    }
35
36    /**
37     * Filters the iterator values.
38     *
39     * @return bool true if the value should be kept, false otherwise
40     */
41    public function accept()
42    {
43        return $this->getInnerIterator()->getDepth() >= $this->minDepth;
44    }
45}
46