BindingsScanner   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
wmc 8
lcom 0
cbo 2
dl 0
loc 47
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
C scan() 0 26 7
1
<?php
2
/**
3
 * Spiral Framework, IDE Helper
4
 *
5
 * @author    Dmitry Mironov <[email protected]>
6
 * @licence   MIT
7
 */
8
9
namespace Spiral\IdeHelper\Scanners;
10
11
use Spiral\Core\Container;
12
use Spiral\IdeHelper\Model\ClassMember;
13
use Spiral\IdeHelper\Model\ClassProperty;
14
15
/**
16
 * Class BindingsScanner
17
 *
18
 * @package Spiral\IdeHelper\Scanners
19
 */
20
class BindingsScanner
21
{
22
    /**
23
     * @var Container
24
     */
25
    private $container;
26
27
    /**
28
     * BindingsScanner constructor.
29
     *
30
     * @param Container $container
31
     */
32
    public function __construct(Container $container)
33
    {
34
        $this->container = $container;
35
    }
36
37
    /**
38
     * @return ClassMember[]
39
     */
40
    public function scan(): array
41
    {
42
        $properties = [];
43
        $bindings = $this->container->getBindings();
44
45
        foreach ($bindings as $name => $resolver) {
46
            // skip complex things. complex things are bad.
47
            if (is_array($resolver)) {
48
                continue;
49
            }
50
51
            // skip if it's not looks like a short binding
52
            if (lcfirst($name) !== $name || strpos($name, '\\')) {
53
                continue;
54
            }
55
56
            // skip if target class doesn't exists
57
            if (!class_exists($resolver) && !interface_exists($resolver)) {
58
                continue;
59
            }
60
61
            $properties[] = new ClassProperty($name, $resolver);
62
        }
63
64
        return $properties;
65
    }
66
}
67