Completed
Branch FET-10619-money-entity (7a75a0)
by
unknown
70:14 queued 54:09
created

Currency::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 19
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 17
c 1
b 0
f 0
nc 1
nop 8
dl 0
loc 19
rs 9.4285

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
<?php
2
3
namespace EventEspresso\core\domain\values\currency;
4
5
use EventEspresso\core\entities\Label;
6
7
defined('EVENT_ESPRESSO_VERSION') || exit;
8
9
10
11
/**
12
 * Class Currency
13
 * DTO for data pertaining to a currency
14
 *
15
 * @package       Event Espresso
16
 * @author        Brent Christensen
17
 * @since         $VID:$
18
 */
19
class Currency
20
{
21
22
    /**
23
     * eg 'US'
24
     *
25
     * @var string $code
26
     */
27
    private $code;
28
29
    /**
30
     * @var Label $label
31
     */
32
    private $label;
33
34
    /**
35
     * currency sign
36
     *
37
     * @var string $sign
38
     * eg '$'
39
     */
40
    private $sign;
41
42
    /**
43
     * Whether the currency sign should come before the number or not
44
     *
45
     * @var boolean $sign_b4
46
     */
47
    private $sign_b4;
48
49
    /**
50
     * How many digits should come after the decimal place
51
     * Although not theoretically true, it can effectively
52
     * be considered that all currencies are decimal based.
53
     * Therefore the number of decimal places can be used
54
     * to calculate number of subunits like so:
55
     *  subunits = pow( 10, decimal places  )
56
     *
57
     * @var int $decimal_places
58
     */
59
    private $decimal_places;
60
61
    /**
62
     * Symbol to use for decimal mark
63
     *
64
     * @var string $decimal_mark
65
     * eg '.'
66
     */
67
    private $decimal_mark;
68
69
    /**
70
     * Symbol to use for thousands
71
     *
72
     * @var string $thousands
73
     * eg ','
74
     */
75
    private $thousands;
76
77
    /**
78
     * The number of fractional divisions of a currency's main unit
79
     * Can be used to determine the number of decimal places used.
80
     * Because
81
     *  subunits = pow( 10, decimal places )
82
     * then
83
     *  decimal places = log( subunits )
84
     * except that a result of 1 means there are zero decimal places
85
     *
86
     * @var int
87
     */
88
    private $subunits;
89
90
91
92
    /**
93
     * Currency constructor.
94
     *
95
     * @param string $code
96
     * @param Label  $label
97
     * @param string $sign
98
     * @param bool   $sign_b4
99
     * @param int    $decimal_places the number of decimal places to use when DISPLAYING the currency
100
     * @param string $decimal_mark
101
     * @param string $thousands
102
     * @param int    $subunits number of fractional divisions of a currency's main unit
103
     */
104
    public function __construct(
105
        $code,
106
        Label $label,
107
        $sign,
108
        $sign_b4,
109
        $decimal_places,
110
        $decimal_mark,
111
        $thousands,
112
        $subunits
113
    ) {
114
        $this->code           = $code;
115
        $this->label          = $label;
116
        $this->sign           = $sign;
117
        $this->sign_b4        = $sign_b4;
118
        $this->decimal_places = $decimal_places;
119
        $this->decimal_mark   = $decimal_mark;
120
        $this->thousands      = $thousands;
121
        $this->subunits       = $subunits;
122
    }
123
124
125
126
    /**
127
     * returns true if this currency is the same as the supplied currency
128
     *
129
     * @param Currency $other
130
     * @return bool
131
     */
132
    public function equals(Currency $other)
133
    {
134
        return $this->code() === $other->code();
135
    }
136
137
138
139
    /**
140
     * @return string
141
     */
142
    public function code()
143
    {
144
        return $this->code;
145
    }
146
147
148
149
    /**
150
     * @return string
151
     */
152
    public function name()
153
    {
154
        return $this->label->singular();
155
    }
156
157
158
159
    /**
160
     * @return string
161
     */
162
    public function plural()
163
    {
164
        return $this->label->plural();
165
    }
166
167
168
169
    /**
170
     * @return string
171
     */
172
    public function sign()
173
    {
174
        return $this->sign;
175
    }
176
177
178
179
    /**
180
     * @return bool
181
     */
182
    public function signB4()
183
    {
184
        return $this->sign_b4;
185
    }
186
187
188
189
    /**
190
     * @return int
191
     */
192
    public function decimalPlaces()
193
    {
194
        return $this->decimal_places;
195
    }
196
197
198
199
    /**
200
     * @return string
201
     */
202
    public function decimalMark()
203
    {
204
        return $this->decimal_mark;
205
    }
206
207
208
209
    /**
210
     * @return string
211
     */
212
    public function thousands()
213
    {
214
        return $this->thousands;
215
    }
216
217
218
219
    /**
220
     * The difference between currency units and subunits
221
     * is 10-to-the-power-of-this.
222
     * DecimalMark is used for display, this is used for calculations
223
     * @return int
224
     */
225
    public function subunits()
226
    {
227
        return $this->subunits;
228
    }
229
230
231
232
    /**
233
     * @return string
234
     */
235
    public function __toString()
236
    {
237
        return $this->code();
238
    }
239
240
241
242
}
243
// End of file Currency.php
244
// Location: core/entities/money/Currency.php
245