ClassMetadataFactory::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

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