Passed
Push — master ( d77b4c...5fea4d )
by Phillip
01:15
created

ComposerNamespaceLocatorStrategy::isPluginNamespace()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 5
c 0
b 0
f 0
rs 10
cc 2
nc 2
nop 1
1
<?php
2
3
4
namespace Deployee\Components\Plugins\Locator;
5
6
7
use Composer\Autoload\ClassLoader;
8
9
class ComposerNamespaceLocatorStrategy implements LocatorStrategyInterface
10
{
11
    use IsPluginTrait;
12
13
    /**
14
     * @var ClassLoader
15
     */
16
    private $classLoader;
17
18
    /**
19
     * ComposerNamespaceLocatorStrategy constructor.
20
     * @param ClassLoader $classLoader
21
     */
22 1
    public function __construct(ClassLoader $classLoader)
23
    {
24 1
        $this->classLoader = $classLoader;
25 1
    }
26
27 1
    public function locate(): array
28
    {
29 1
        $list = [];
30 1
        foreach($this->classLoader->getPrefixesPsr4() as $namespace => $rootDirs){
31
32 1
            $expectedClass = $namespace . sprintf(
33 1
                '%1$s\\%1$sPlugin',
34 1
                basename(substr($namespace, 0 ,-1))
35
            );
36
37 1
            if($this->isPlugin($expectedClass)){
38 1
                $list[] = $expectedClass;
39
            }
40
        }
41
42 1
        return $list;
43
    }
44
}