ClassMetadataFactory   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Test Coverage

Coverage 68.42%

Importance

Changes 0
Metric Value
eloc 14
dl 0
loc 64
ccs 13
cts 19
cp 0.6842
rs 10
c 0
b 0
f 0
wmc 8

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getMetadataFor() 0 13 3
A hasMetadataFor() 0 3 1
A isTransient() 0 3 1
A getAllMetadata() 0 3 1
A setMetadataFor() 0 3 1
A __construct() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\SkeletonMapper\Mapping;
6
7
use Doctrine\Persistence\Mapping\ClassMetadataFactory as BaseClassMetadataFactory;
8
9
/**
10
 * Class responsible for retrieving ClassMetadata instances.
11
 */
12
class ClassMetadataFactory implements BaseClassMetadataFactory
13
{
14
    /** @var ClassMetadataInstantiatorInterface */
15
    private $classMetadataInstantiator;
16
17
    /** @var ClassMetadataInterface[] */
18
    private $classes = [];
19
20 22
    public function __construct(ClassMetadataInstantiatorInterface $classMetadataInstantiator)
21
    {
22 22
        $this->classMetadataInstantiator = $classMetadataInstantiator;
23 22
    }
24
25
    /**
26
     * Returns all mapped classes.
27
     *
28
     * @return ClassMetadataInterface[] The ClassMetadataInterface instances of all mapped classes.
29
     */
30
    public function getAllMetadata() : array
31
    {
32
        return $this->classes;
33
    }
34
35
    /**
36
     * @param string $className
37
     */
38 22
    public function getMetadataFor($className) : ClassMetadataInterface
39
    {
40 22
        if (! isset($this->classes[$className])) {
41 22
            $metadata = $this->classMetadataInstantiator->instantiate($className);
42
43 22
            if ($metadata->reflClass->implementsInterface('Doctrine\SkeletonMapper\Mapping\LoadMetadataInterface')) {
44 22
                $className::loadMetadata($metadata);
45
            }
46
47 22
            $this->classes[$className] = $metadata;
48
        }
49
50 22
        return $this->classes[$className];
51
    }
52
53
    /**
54
     * {@inheritDoc}
55
     */
56
    public function hasMetadataFor($className) : bool
57
    {
58
        return isset($this->classes[$className]);
59
    }
60
61
    /**
62
     * @param string                 $className
63
     * @param ClassMetadataInterface $class
64
     */
65 22
    public function setMetadataFor($className, $class)
66
    {
67 22
        $this->classes[$className] = $class;
68 22
    }
69
70
    /**
71
     * {@inheritDoc}
72
     */
73
    public function isTransient($className) : bool
74
    {
75
        return isset($this->classes[$className]);
76
    }
77
}
78