Completed
Push — master ( fa3c04...692093 )
by Vitaly
02:57
created

ArrayClassResolver   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 8
c 1
b 0
f 0
lcom 1
cbo 0
dl 0
loc 42
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 11 3
A resolve() 0 13 4
A resolveArrayKeys() 0 4 1
1
<?php declare(strict_types = 1);
2
/**
3
 * Created by PhpStorm.
4
 * User: root
5
 * Date: 29.07.2016
6
 * Time: 21:38.
7
 */
8
namespace samsonframework\container\resolver;
9
10
use samsonframework\container\annotation\ClassInterface;
11
use samsonframework\container\metadata\ClassMetadata;
12
13
/**
14
 * Array class resolver class.
15
 * @author Vitaly Iegorov <[email protected]>
16
 */
17
class ArrayClassResolver implements ArrayResolverInterface
18
{
19
    /** @var array Collection of supported array keys */
20
    protected $keys = [];
21
22
    /**
23
     * ArrayClassResolver constructor.
24
     */
25
    public function __construct()
26
    {
27
        // Gather all supported configuration keys
28
        $this->keys = [];
29
        foreach (get_declared_classes() as $className) {
30
            if (in_array(ClassInterface::class, class_implements($className), true)) {
31
                $annotationName = substr($className, strrpos($className, '\\') + 1);
32
                $this->keys[strtolower($annotationName)] = $className;
33
            }
34
        }
35
    }
36
37
    /**
38
     * {@inheritDoc}
39
     */
40
    public function resolve(array $classDataArray, ClassMetadata $classMetadata)
41
    {
42
        foreach ($classDataArray as $item => $configuration) {
43
            // If we have class resolving key
44
            foreach ($this->keys as $key => $className) {
45
                if (array_key_exists($key, $configuration)) {
46
                    (new $className(['value' => $configuration[$key]]))->toClassMetadata($classMetadata);
47
                }
48
            }
49
        }
50
51
        return $classMetadata;
52
    }
53
54
    public function resolveArrayKeys()
55
    {
56
57
    }
58
}
59