Test Setup Failed
Push — develop ( 082d66...6f26e1 )
by Guilherme
63:04
created

getClassMetadataFactory()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
/*
4
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
5
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
6
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
7
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
8
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
10
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
12
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
14
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15
 *
16
 * This software consists of voluntary contributions made by many individuals
17
 * and is licensed under the MIT license. For more information, see
18
 * <http://www.doctrine-project.org>.
19
 */
20
21
declare(strict_types=1);
22
23
namespace Doctrine\ORM\Mapping;
24
25
use Doctrine\ORM\Mapping\Factory\DefaultNamingStrategy;
26
use Doctrine\ORM\Mapping\Factory\NamingStrategy;
27
28
/**
29
 * Class ClassMetadataBuildingContext
30
 *
31
 * @package Doctrine\ORM\Mapping\Factory
32
 * @since 3.0
33
 *
34
 * @author Guilherme Blanco <[email protected]>
35
 */
36
class ClassMetadataBuildingContext
37
{
38
    /** @var AbstractClassMetadataFactory */
39
    private $classMetadataFactory;
40
41
    /** @var NamingStrategy */
42
    private $namingStrategy;
43
44
    /**
45
     * @var array<SecondPass>
46
     */
47
    protected $secondPassList = [];
48
49
    /**
50
     * @var bool
51
     */
52
    private $inSecondPass = false;
53
54
    /**
55
     * ClassMetadataBuildingContext constructor.
56
     *
57
     * @param AbstractClassMetadataFactory $classMetadataFactory
58
     * @param NamingStrategy|null          $namingStrategy
59
     */
60
    public function __construct(
61
        AbstractClassMetadataFactory $classMetadataFactory,
62
        ?NamingStrategy $namingStrategy = null
63
    )
64
    {
65
        $this->classMetadataFactory = $classMetadataFactory;
66
        $this->namingStrategy       = $namingStrategy ?: new DefaultNamingStrategy();
67
    }
68
69
    /**
70
     * @return AbstractClassMetadataFactory
71
     */
72
    public function getClassMetadataFactory() : AbstractClassMetadataFactory
73
    {
74
        return $this->classMetadataFactory;
75
    }
76
77
    /**
78
     * @return NamingStrategy
79
     */
80
    public function getNamingStrategy() : NamingStrategy
81
    {
82
        return $this->namingStrategy;
83
    }
84
85
    /**
86
     * @param SecondPass $secondPass
87
     *
88
     * @return void
89
     */
90
    public function addSecondPass(SecondPass $secondPass) : void
91
    {
92
        $this->secondPassList[] = $secondPass;
93
    }
94
95
    /**
96
     * @return bool
97
     */
98
    public function isInSecondPass() : bool
99
    {
100
        return $this->inSecondPass;
101
    }
102
103
    /**
104
     * @return void
105
     */
106
    public function validate() : void
107
    {
108
        $this->inSecondPass = true;
109
110
        foreach ($this->secondPassList as $secondPass) {
111
            /** @var SecondPass $secondPass */
112
            $secondPass->process($this);
113
        }
114
115
        $this->inSecondPass = false;
116
    }
117
}
118