f50fd82c345f49a80f6ab9bccab7d77891798172
[yaffs-website] / vendor / symfony / finder / Iterator / FileTypeFilterIterator.php
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  * FileTypeFilterIterator only keeps files, directories, or both.
16  *
17  * @author Fabien Potencier <fabien@symfony.com>
18  */
19 class FileTypeFilterIterator extends FilterIterator
20 {
21     const ONLY_FILES = 1;
22     const ONLY_DIRECTORIES = 2;
23
24     private $mode;
25
26     /**
27      * Constructor.
28      *
29      * @param \Iterator $iterator The Iterator to filter
30      * @param int       $mode     The mode (self::ONLY_FILES or self::ONLY_DIRECTORIES)
31      */
32     public function __construct(\Iterator $iterator, $mode)
33     {
34         $this->mode = $mode;
35
36         parent::__construct($iterator);
37     }
38
39     /**
40      * Filters the iterator values.
41      *
42      * @return bool true if the value should be kept, false otherwise
43      */
44     public function accept()
45     {
46         $fileinfo = $this->current();
47         if (self::ONLY_DIRECTORIES === (self::ONLY_DIRECTORIES & $this->mode) && $fileinfo->isFile()) {
48             return false;
49         } elseif (self::ONLY_FILES === (self::ONLY_FILES & $this->mode) && $fileinfo->isDir()) {
50             return false;
51         }
52
53         return true;
54     }
55 }