ContainersLocator   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 2
dl 0
loc 45
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A locate() 0 10 2
1
<?php
2
/**
3
 * Spiral Framework, IDE Helper
4
 *
5
 * @author    Dmitry Mironov <[email protected]>
6
 * @licence   MIT
7
 */
8
9
namespace Spiral\IdeHelper\Locators;
10
11
use Spiral\IdeHelper\Model\ClassDefinition;
12
use Spiral\IdeHelper\Scanners\BindingsScanner;
13
use Spiral\Tokenizer\ClassesInterface;
14
15
/**
16
 * Class ContainersLocator
17
 *
18
 * @package Spiral\IdeHelper\Locators
19
 */
20
class ContainersLocator implements LocatorInterface
21
{
22
    /**
23
     * @var ClassesInterface
24
     */
25
    private $classes;
26
27
    /**
28
     * @var BindingsScanner
29
     */
30
    private $scanner;
31
32
    /**
33
     * @var string[]
34
     */
35
    private $targets;
36
37
    /**
38
     * ContainersLocator constructor.
39
     *
40
     * @param ClassesInterface $classes
41
     * @param BindingsScanner  $scanner
42
     * @param array            $targets
43
     */
44
    public function __construct(ClassesInterface $classes, BindingsScanner $scanner, array $targets)
45
    {
46
        $this->classes = $classes;
47
        $this->scanner = $scanner;
48
        $this->targets = $targets;
49
    }
50
51
    /**
52
     * @inheritdoc
53
     */
54
    public function locate(): array
55
    {
56
        $bindings = $this->scanner->scan();
57
58
        $results = [];
59
        foreach ($this->targets as $target) {
60
            $results[] = new ClassDefinition($target, $bindings);
61
        }
62
        return $results;
63
    }
64
}
65