XmlResolver   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 4
dl 0
loc 48
ccs 11
cts 11
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 9 1
A resolve() 0 16 1
1
<?php declare(strict_types = 1);
2
/**
3
 * Created by Vitaly Iegorov <[email protected]>.
4
 * on 14.08.16 at 15:55
5
 */
6
namespace samsonframework\containerxml;
7
8
use samsonframework\containercollection\CollectionClassResolver;
9
use samsonframework\containercollection\CollectionMethodResolver;
10
use samsonframework\containercollection\CollectionPropertyResolver;
11
use samsonframework\container\metadata\ClassMetadata;
12
use samsonframework\container\resolver\ResolverInterface;
13
14
/**
15
 * XML dependency injection container configuration.
16
 *
17
 * @author Vitaly Iegorov <[email protected]>
18
 * @author Ruslan Molodyko  <[email protected]>
19
 */
20
class XmlResolver implements ResolverInterface
21
{
22
    /** @var CollectionClassResolver */
23
    protected $classResolver;
24
25
    /** @var CollectionPropertyResolver */
26
    protected $propertyResolver;
27
28
    /** @var CollectionMethodResolver */
29
    protected $methodResolver;
30
31
    /**
32
     * AnnotationResolver constructor.
33
     *
34
     * @param CollectionClassResolver $classResolver
35
     * @param CollectionPropertyResolver $propertyResolver
36
     * @param CollectionMethodResolver $methodResolver
37
     */
38 2
    public function __construct(
39
        CollectionClassResolver $classResolver,
40
        CollectionPropertyResolver $propertyResolver,
41
        CollectionMethodResolver $methodResolver
42
    ) {
43 2
        $this->classResolver = $classResolver;
44 2
        $this->propertyResolver = $propertyResolver;
45 2
        $this->methodResolver = $methodResolver;
46 2
    }
47
48
    /**
49
     * {@inheritDoc}
50
     */
51 2
    public function resolve($classData, ClassMetadata $classMetadata = null) : ClassMetadata
52
    {
53
        /** @var array $classData */
54
55
        // Get or create and fill class metadata
56 2
        $classMetadata = $classMetadata ?? new ClassMetadata();
57
58
        // Resolve class definition annotations
59 2
        $this->classResolver->resolve($classData, $classMetadata);
60
        // Resolve class properties annotations
61 2
        $this->propertyResolver->resolve($classData, $classMetadata);
62
        // Resolve class methods annotations
63 2
        $this->methodResolver->resolve($classData, $classMetadata);
64
65 2
        return $classMetadata;
66
    }
67
}
68