Completed
Push — b0.27.0 ( ed7688...8b3edf )
by Sebastian
07:42 queued 26s
created

UuidDomainObjectAbstract::getUuid()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
ccs 0
cts 3
cp 0
rs 10
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
/**
4
 * Linna Framework.
5
 *
6
 * @author Sebastian Rapetti <[email protected]>
7
 * @copyright (c) 2018, Sebastian Rapetti
8
 * @license http://opensource.org/licenses/MIT MIT License
9
 */
10
declare(strict_types=1);
11
12
namespace Linna\DataMapper;
13
14
use UnexpectedValueException;
15
16
/**
17
 * Abstract Class for Domain Object, UUID version.
18
 */
19
abstract class UuidDomainObjectAbstract implements UuidDomainObjectInterface
20
{
21
    /**
22
     * @var int Read only object id on persistent storage.
23
     */
24
    protected int $uuid = 0;
25
26
    /**
27
     * @var string Insertion date on persistent storage.
28
     */
29
    public string $created = '';
30
31
    /**
32
     * @var string Last update date on persistento storage.
33
     */
34
    public string $lastUpdate = '';
35
36
    /**
37
     * Get the UUID of the object (unique to the object type).
38
     *
39
     * <pre><code class="php">$object = new DomainObject($dependencies);
40
     *
41
     * $object->getUuid();
42
     * </code></pre>
43
     *
44
     * @return string Current object uuid.
45
     */
46
    public function getUuid(): string
47
    {
48
        return $this->uuid;
49
    }
50
51
    /**
52
     * Set the uuid for the object.
53
     *
54
     * <pre><code class="php">$object = new DomainObject($dependencies);
55
     *
56
     * $object->setId('10f6bace-22f3-4b42-9dda-659c89a3a3c9');
57
     * </code></pre>
58
     *
59
     * @param string $uuid New object uuid.
60
     *
61
     * @throws UnexpectedValueException If the uuid on the object is already set.
62
     *
63
     * @return string New object uid.
64
     */
65
    public function setId(string $uuid): string
66
    {
67
        if ($this->uuid !== '') {
0 ignored issues
show
introduced by
The condition $this->uuid !== '' is always true.
Loading history...
68
            throw new UnexpectedValueException('ObjectId property is immutable.');
69
        }
70
71
        $this->uuid = $uuid;
72
73
        return $uuid;
74
    }
75
76
    /**
77
     * Set the creation date for the object.
78
     *
79
     * @return void
80
     *
81
     * @throws UnexpectedValueException If the creation date on the object is already set.
82
     */
83
    public function setCreated(): void
84
    {
85
        $date = \date(DATE_ATOM);
86
87
        if ($this->created !== '') {
88
            throw new UnexpectedValueException('Creation date property is immutable.');
89
        }
90
91
        $this->created = $date;
92
    }
93
94
    /**
95
     * Set the time for the last object changes.
96
     *
97
     * @return void
98
     */
99
    public function setLastUpdate(): void
100
    {
101
        $date = \date(DATE_ATOM);
102
103
        $this->lastUpdate = $date;
104
    }
105
106
    /**
107
     * Return the value of a private or protected property.
108
     *
109
     * @param string $name
110
     *
111
     * @return mixed
112
     */
113
    public function __get(string $name)
114
    {
115
        if ($name === 'uuid' || $name === 'id') {
116
            return $this->uuid;
117
        }
118
    }
119
120
    /**
121
     * Return if a private or protected property exists.
122
     *
123
     * @param string $name
124
     *
125
     * @return bool
126
     */
127
    public function __isset(string $name)
128
    {
129
        if ($name === 'uuid') {
130
            return true;
131
        }
132
133
        return false;
134
    }
135
}
136