BindingsLocator::locate()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 12
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 7
nc 2
nop 0
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\Core\Traits\SharedTrait;
12
use Spiral\IdeHelper\Model\ClassDefinition;
13
use Spiral\IdeHelper\Scanners\BindingsScanner;
14
use Spiral\Tokenizer\ClassesInterface;
15
16
/**
17
 * Class BindingsLocator
18
 *
19
 * @package Spiral\IdeHelper\Locators
20
 */
21
class BindingsLocator implements LocatorInterface
22
{
23
    /**
24
     * @var ClassesInterface
25
     */
26
    private $classes;
27
28
    /**
29
     * @var BindingsScanner
30
     */
31
    private $scanner;
32
33
    /**
34
     * BindingsHelper constructor.
35
     *
36
     * @param ClassesInterface $classes
37
     * @param BindingsScanner  $scanner
38
     */
39
    public function __construct(ClassesInterface $classes, BindingsScanner $scanner)
40
    {
41
        $this->classes = $classes;
42
        $this->scanner = $scanner;
43
    }
44
45
    /**
46
     * @return ClassDefinition[]
47
     */
48
    public function locate(): array
49
    {
50
        $bindings = $this->scanner->scan();
51
        $classNames = array_keys($this->classes->getClasses(SharedTrait::class));
52
53
        $classes = [];
54
        foreach ($classNames as $className) {
55
            $classes[] = new ClassDefinition($className, $bindings);
56
        }
57
58
        return $classes;
59
    }
60
}
61