Passed
Push — master ( 8c9a09...69f647 )
by Sebastian
04:19
created

NumberInfo_Immutable::setValue()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 10
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 4
c 1
b 0
f 0
dl 0
loc 10
rs 10
cc 3
nc 2
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AppUtils;
6
7
class NumberInfo_Immutable extends NumberInfo
8
{
9
    /**
10
     * @param NumberInfo|float|int|string|NULL $value
11
     * @return NumberInfo_Immutable
12
     */
13
    public function setValue($value)
14
    {
15
        $number = parseNumber($value, true);
16
17
        if($number->getNumber() === $this->getNumber() && $number->hasUnits() === $this->hasUnits())
18
        {
19
            return $this;
20
        }
21
22
        return parseNumberImmutable($number);
23
    }
24
25
    /**
26
     * @param NumberInfo|float|int|string|NULL $number
27
     * @return NumberInfo_Immutable
28
     */
29
    public function setNumber($number)
30
    {
31
        $number = parseNumber($number, true);
32
33
        if($number->getNumber() === $this->getNumber() && $number->getUnits() === $this->getUnits())
34
        {
35
            return $this;
36
        }
37
38
        return parseNumberImmutable($number);
39
    }
40
41
    /**
42
     * @param NumberInfo|float|int|string|null $value
43
     * @return NumberInfo_Immutable
44
     */
45
    public function add($value)
46
    {
47
        $number = parseNumber($this, true);
48
        $number->add($value);
49
50
        if($number->getNumber() === $this->getNumber())
51
        {
52
            return $this;
53
        }
54
55
        return parseNumberImmutable($number);
56
    }
57
58
    /**
59
     * @param NumberInfo|float|int|string|NULL $value
60
     * @return NumberInfo_Immutable
61
     */
62
    public function subtract($value)
63
    {
64
        $number = parseNumber($this, true);
65
        $number->subtract($value);
66
67
        if($number->getNumber() === $this->getNumber())
68
        {
69
            return $this;
70
        }
71
72
        return parseNumberImmutable($number);
73
    }
74
75
    /**
76
     * @param float $percent
77
     * @return NumberInfo_Immutable
78
     */
79
    public function subtractPercent(float $percent)
80
    {
81
        $number = parseNumber($this, true);
82
        $number->subtractPercent($percent);
83
84
        if($number->getNumber() === $this->getNumber())
85
        {
86
            return $this;
87
        }
88
89
        return parseNumberImmutable($number);
90
    }
91
92
    /**
93
     * @param float $percent
94
     * @return NumberInfo_Immutable
95
     */
96
    public function addPercent(float $percent)
97
    {
98
        $number = parseNumber($this, true);
99
        $number->addPercent($percent);
100
101
        if($number->getNumber() === $this->getNumber())
102
        {
103
            return $this;
104
        }
105
106
        return parseNumberImmutable($number);
107
    }
108
109
    /**
110
     * @return NumberInfo_Immutable
111
     */
112
    public function floorEven() : NumberInfo
113
    {
114
        $number = parseNumber($this, true);
115
        $number->floorEven();
116
117
        if($number->getNumber() === $this->getNumber())
118
        {
119
            return $this;
120
        }
121
122
        return parseNumberImmutable($number);
123
    }
124
125
    /**
126
     * @return NumberInfo_Immutable
127
     */
128
    public function ceilEven()
129
    {
130
        $number = parseNumber($this, true);
131
        $number->ceilEven();
132
133
        if($number->getNumber() === $this->getNumber())
134
        {
135
            return $this;
136
        }
137
138
        return parseNumberImmutable($number);
139
    }
140
}
141