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