Passed
Branch dev_2x (3e8772)
by Adrian
01:42
created

ComputedProperty   A

Complexity

Total Complexity 18

Size/Duplication

Total Lines 144
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 18
eloc 38
c 0
b 0
f 0
dl 0
loc 144
rs 10
1
<?php
2
declare(strict_types=1);
3
4
namespace Sirius\Orm\Blueprint;
5
6
use Sirius\Orm\CodeGenerator\Observer\ComputedPropertyObserver;
7
8
class ComputedProperty extends Base
9
{
10
    use MapperAwareTrait;
11
12
    protected $name;
13
14
    /**
15
     * Type of property (int|float|DateTime|Some\Other\Class)
16
     * @var string
17
     */
18
    protected $type;
19
20
    protected $nullable = true;
21
22
    protected $setterComment;
23
24
    protected $setterBody;
25
26
    protected $getterComment;
27
28
    protected $getterBody;
29
30
    /**
31
     * @var ComputedPropertyObserver
32
     */
33
    protected $observer;
34
35
    public static function make($name = '')
36
    {
37
        return (new static)->setName($name);
38
    }
39
40
    public function getObservers(): array
41
    {
42
        $observer = $this->getObserver()->with($this);
43
44
        return [
45
            $this->mapper->getName() . '_base_entity' => [$observer],
46
        ];
47
    }
48
49
    public function getName(): string
50
    {
51
        return $this->name;
52
    }
53
54
    public function setName(string $name): ComputedProperty
55
    {
56
        $this->name = $name;
57
58
        return $this;
59
    }
60
61
    public function getSetterBody(): ?string
62
    {
63
        return $this->setterBody;
64
    }
65
66
    public function setSetterBody(string $setterBody): ComputedProperty
67
    {
68
        $this->setterBody = $setterBody;
69
70
        return $this;
71
    }
72
73
    public function getGetterBody(): string
74
    {
75
        return $this->getterBody;
76
    }
77
78
    public function setGetterBody(string $getterBody): ComputedProperty
79
    {
80
        $this->getterBody = $getterBody;
81
82
        return $this;
83
    }
84
85
    public function getType(): ?string
86
    {
87
        return $this->type;
88
    }
89
90
    public function setType(string $type): ComputedProperty
91
    {
92
        $this->type = $type;
93
94
        return $this;
95
    }
96
97
    public function getSetterComment(): ?string
98
    {
99
        return $this->setterComment;
100
    }
101
102
    public function setSetterComment(string $setterComment = null): ComputedProperty
103
    {
104
        $this->setterComment = $setterComment;
105
106
        return $this;
107
    }
108
109
    public function getGetterComment(): ?string
110
    {
111
        return $this->getterComment;
112
    }
113
114
    public function setGetterComment(string $getterComment = null): ComputedProperty
115
    {
116
        $this->getterComment = $getterComment;
117
118
        return $this;
119
    }
120
121
    public function getNullable(): bool
122
    {
123
        return $this->nullable;
124
    }
125
126
    public function setNullable(bool $nullable): ComputedProperty
127
    {
128
        $this->nullable = $nullable;
129
130
        return $this;
131
    }
132
133
134
    /**
135
     * @return ComputedPropertyObserver
136
     */
137
    public function getObserver(): ComputedPropertyObserver
138
    {
139
        return $this->observer ?? new ComputedPropertyObserver();
140
    }
141
142
    /**
143
     * @param ComputedPropertyObserver $observer
144
     *
145
     * @return ComputedProperty
146
     */
147
    public function setObserver(ComputedPropertyObserver $observer): ComputedProperty
148
    {
149
        $this->observer = $observer;
150
151
        return $this;
152
    }
153
}
154