XmlResolver::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 9
ccs 5
cts 5
cp 1
rs 9.6666
c 0
b 0
f 0
cc 1
eloc 7
nc 1
nop 3
crap 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