Passed
Push — master ( 3376db...1497f5 )
by Mike
12:25
created

ModuleFinder::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 0
cts 6
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 3
crap 2
1
<?php
2
3
4
namespace Nexus\DynamicModules\Business\Finder;
5
6
7
use Symfony\Component\Finder\Finder;
8
9
class ModuleFinder implements ModuleFinderInterface
10
{
11
    /**
12
     * @var string
13
     */
14
    private $applicationPath;
15
16
    /**
17
     * @var string
18
     */
19
    private $providerNameFilter;
20
21
    /**
22
     * @var array
23
     */
24
    private $namespaces;
25
26
    /**
27
     * ModuleFinder constructor.
28
     *
29
     * @param string $applicationPath
30
     * @param string $providerNameFilter
31
     * @param array $namespaces
32
     */
33
    public function __construct(string $applicationPath, string $providerNameFilter, array $namespaces)
34
    {
35
        $this->applicationPath = $applicationPath;
36
        $this->providerNameFilter = $providerNameFilter;
37
        $this->namespaces = $namespaces;
38
    }
39
40
41
    /**
42
     * @return array
43
     */
44
    public function getModuleList()
45
    {
46
        $modules = [];
47
48
        foreach ($this->getSearchDirectories() as $dir) {
49
            $modules = array_merge($modules, glob($dir . '/*'));
50
        }
51
52
        return $modules;
53
    }
54
55
    /**
56
     * @return array
57
     */
58
    private function getSearchDirectories() : array
59
    {
60
        $directories = [];
61
62
        foreach ($this->namespaces as $namespace) {
63
            $directories[] = $this->applicationPath . '/src/' . $namespace;
64
            $directories[] = $this->applicationPath . '/vendor/*/*/src/' . $namespace;
65
        }
66
67
        return $directories;
68
    }
69
}