RegexIteratorFileFinder   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Test Coverage

Coverage 92.86%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 14
c 2
b 0
f 0
dl 0
loc 28
ccs 13
cts 14
cp 0.9286
rs 10
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A getFiles() 0 24 4
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Jerowork\FileClassReflector\FileFinder\RegexIterator;
6
7
use Jerowork\FileClassReflector\FileFinder\FileFinder;
8
use RecursiveDirectoryIterator;
9
use RecursiveIteratorIterator;
10
use RegexIterator;
11
12
final class RegexIteratorFileFinder implements FileFinder
13
{
14
    private const REGEX_PHP_FILE = '/^.+\.php$/i';
15
16 3
    public function getFiles(string ...$directories) : array
17
    {
18 3
        $files = [];
19
20 3
        foreach ($directories as $directory) {
21 3
            $filesIterator = new RegexIterator(
22 3
                new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)),
23 3
                self::REGEX_PHP_FILE,
24 3
                RegexIterator::GET_MATCH,
25 3
            );
26
27
            /** @var array<int, string> $filePath */
28 3
            foreach ($filesIterator as $filePath) {
29 3
                if (isset($filePath[0]) === false) {
30
                    continue;
31
                }
32
33 3
                $files[] = $filePath[0];
34
            }
35
        }
36
37 3
        sort($files);
38
39 3
        return $files;
40
    }
41
}
42