DoctrineAwarePropertyMapperDecorator   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 61.11%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
c 1
b 0
f 0
lcom 1
cbo 5
dl 0
loc 56
ccs 11
cts 18
cp 0.6111
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A getEntityProperty() 0 4 1
A getApiProperty() 0 4 1
A getApiProperties() 0 4 1
A getEntityProperties() 0 4 1
A normalizeClassName() 0 12 2
1
<?php
2
3
namespace ScayTrase\Api\Cruds\Adaptors\DoctrineOrm;
4
5
use Doctrine\Common\Persistence\ManagerRegistry;
6
use ScayTrase\Api\Cruds\Exception\MapperException;
7
use ScayTrase\Api\Cruds\PropertyMapperInterface;
8
9
final class DoctrineAwarePropertyMapperDecorator implements PropertyMapperInterface
10
{
11
    /** @var  PropertyMapperInterface */
12
    private $decorated;
13
    /** @var  ManagerRegistry */
14
    private $registry;
15
16
    /**
17
     * DoctrineAwarePropertyMapperDecorator constructor.
18
     *
19
     * @param PropertyMapperInterface $decorated
20
     * @param ManagerRegistry         $registry
21
     */
22 10
    public function __construct(PropertyMapperInterface $decorated, ManagerRegistry $registry)
23
    {
24 10
        $this->decorated = $decorated;
25 10
        $this->registry  = $registry;
26 10
    }
27
28
    /** {@inheritdoc} */
29 8
    public function getEntityProperty($className, $apiProperty)
30
    {
31 8
        return $this->decorated->getEntityProperty($this->normalizeClassName($className), $apiProperty);
32
    }
33
34
    /** {@inheritdoc} */
35
    public function getApiProperty($className, $objectProperty)
36
    {
37
        return $this->decorated->getApiProperty($this->normalizeClassName($className), $objectProperty);
38
    }
39
40
    /** {@inheritdoc} */
41
    public function getApiProperties($className): array
42
    {
43
        return $this->decorated->getApiProperties($this->normalizeClassName($className));
44
    }
45
46
    /** {@inheritdoc} */
47
    public function getEntityProperties($className): array
48
    {
49
        return $this->decorated->getEntityProperties($this->normalizeClassName($className));
50
    }
51
52 8
    private function normalizeClassName(string $className): string
53
    {
54 8
        $manager = $this->registry->getManagerForClass($className);
55
56 8
        if (null === $manager) {
57
            throw MapperException::unsupportedClass($className);
58
        }
59
60 8
        $metadata = $manager->getClassMetadata($className);
61
62 8
        return $metadata->getName();
63
    }
64
}
65