AsDbReference::getAlias()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 0
cts 2
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2
1
<?php
2
/**
3
 * File was created 10.05.2016 17:02
4
 */
5
6
namespace PeekAndPoke\Component\Slumber\Annotation\Slumber\Store;
7
8
use Doctrine\Common\Annotations\Annotation;
9
use PeekAndPoke\Component\Slumber\Annotation\PropertyMappingMarker;
10
use PeekAndPoke\Component\Slumber\Annotation\PropertyStorageMarker;
11
use PeekAndPoke\Component\Slumber\Annotation\Slumber\AsObject;
12
use PeekAndPoke\Component\Slumber\Annotation\SlumberAnnotation;
13
use PeekAndPoke\Component\Slumber\Core\Exception\SlumberException;
14
use PeekAndPoke\Component\Slumber\Core\Validation\ValidationContext;
15
16
/**
17
 * @Annotation
18
 * @Annotation\Target("PROPERTY")
19
 *
20
 * @author Karsten J. Gerber <[email protected]>
21
 */
22
class AsDbReference extends SlumberAnnotation implements PropertyStorageMarker, PropertyMappingMarker
23
{
24
    /**
25
     * Set this to true if the reference should be handled as a lazy reference.
26
     *
27
     * TODO: Fully remove the lazy switch since lazy is the default and only behaviour
28
     *
29
     * @var bool
30
     */
31
    public $lazy = true;
32
33
    /** @var AsObject */
34
    private $objectOptions;
35
36
    /**
37
     * @return mixed
38
     */
39
    public function getValue()
40
    {
41
        return $this->value;
42
    }
43
44
    /**
45
     * @return AsObject
46
     */
47 17
    public function getObjectOptions()
48
    {
49 17
        return $this->objectOptions;
50
    }
51
52
    /**
53
     * @param AsObject $objectOptions
54
     *
55
     * @return $this
56
     */
57
    public function setObjectOptions(AsObject $objectOptions)
58
    {
59
        $this->objectOptions = $objectOptions;
60
61
        return $this;
62
    }
63
64
    /**
65
     * Initialize the annotation and validate the given parameters
66
     *
67
     * @param ValidationContext $context
68
     *
69
     * @throws SlumberException
70
     */
71
    public function validate(ValidationContext $context)
72
    {
73
        if ($this->lazy !== true) {
74
            throw $this->createValidationException(
75
                $context,
76
                'Only lazy db references are supported at the moment. You must specify lazy=true'
77
            );
78
        }
79
    }
80
81
    ////  Delegate to the object options  //////////////////////////////////////////////////////////////////////////////
82
83
    /**
84
     * @return string
85
     */
86
    public function getAlias()
87
    {
88
        return $this->objectOptions->getAlias();
89
    }
90
91
    /**
92
     * @return bool
93
     */
94
    public function hasAlias()
95
    {
96
        return $this->objectOptions->hasAlias();
97
    }
98
99
    /**
100
     * @return bool
101
     */
102 17
    public function keepNullValuesInCollections()
103
    {
104 17
        return $this->objectOptions->keepNullValuesInCollections();
105
    }
106
}
107