Completed
Push — master ( 0512a1...7c8694 )
by Tomáš
03:46
created

Currency   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 291
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 291
c 0
b 0
f 0
wmc 3
lcom 0
cbo 0
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A all() 0 38 1
A validateCode() 0 6 2
1
<?php
2
3
namespace Inspirum\Balikobot\Definitions;
4
5
use InvalidArgumentException;
6
7
/**
8
 * Currencies in ISO 4217 format
9
 */
10
final class Currency
11
{
12
    /**
13
     * Dolar
14
     *
15
     * @var string
16
     */
17
    public const AUD = 'AUD';
18
19
    /**
20
     * Real
21
     *
22
     * @var string
23
     */
24
    public const BRL = 'BRL';
25
26
    /**
27
     * Lev
28
     *
29
     * @var string
30
     */
31
    public const BGN = 'BGN';
32
33
    /**
34
     * Renminbi
35
     *
36
     * @var string
37
     */
38
    public const CNY = 'CNY';
39
40
    /**
41
     * Koruna
42
     *
43
     * @var string
44
     */
45
    public const DKK = 'DKK';
46
47
    /**
48
     * Euro
49
     *
50
     * @var string
51
     */
52
    public const EUR = 'EUR';
53
54
    /**
55
     * Koruna
56
     *
57
     * @var string
58
     */
59
    public const CZK = 'CZK';
60
61
    /**
62
     * Peso
63
     *
64
     * @var string
65
     */
66
    public const PHP = 'PHP';
67
68
    /**
69
     * Dolar
70
     *
71
     * @var string
72
     */
73
    public const HKD = 'HKD';
74
75
    /**
76
     * Kuna
77
     *
78
     * @var string
79
     */
80
    public const HRK = 'HRK';
81
82
    /**
83
     * Rupie
84
     *
85
     * @var string
86
     */
87
    public const INR = 'INR';
88
89
    /**
90
     * Rupie
91
     *
92
     * @var string
93
     */
94
    public const IDR = 'IDR';
95
96
    /**
97
     * Šekel
98
     *
99
     * @var string
100
     */
101
    public const ILS = 'ILS';
102
103
    /**
104
     * Jen
105
     *
106
     * @var string
107
     */
108
    public const JPY = 'JPY';
109
110
    /**
111
     * Rand
112
     *
113
     * @var string
114
     */
115
    public const ZAR = 'ZAR';
116
117
    /**
118
     * Won
119
     *
120
     * @var string
121
     */
122
    public const KRW = 'KRW';
123
124
    /**
125
     * Dolar
126
     *
127
     * @var string
128
     */
129
    public const CAD = 'CAD';
130
131
    /**
132
     * Forint
133
     *
134
     * @var string
135
     */
136
    public const HUF = 'HUF';
137
138
    /**
139
     * Ringgit
140
     *
141
     * @var string
142
     */
143
    public const MYR = 'MYR';
144
145
    /**
146
     * Peso
147
     *
148
     * @var string
149
     */
150
    public const MXN = 'MXN';
151
152
    /**
153
     * SDR
154
     *
155
     * @var string
156
     */
157
    public const XDR = 'XDR';
158
159
    /**
160
     * Koruna
161
     *
162
     * @var string
163
     */
164
    public const NOK = 'NOK';
165
166
    /**
167
     * Dolar
168
     *
169
     * @var string
170
     */
171
    public const NZD = 'NZD';
172
173
    /**
174
     * Zlotý
175
     *
176
     * @var string
177
     */
178
    public const PLN = 'PLN';
179
180
    /**
181
     * Nové leu
182
     *
183
     * @var string
184
     */
185
    public const RON = 'RON';
186
187
    /**
188
     * Rubl
189
     *
190
     * @var string
191
     */
192
    public const RUB = 'RUB';
193
194
    /**
195
     * Dolar
196
     *
197
     * @var string
198
     */
199
    public const SGD = 'SGD';
200
201
    /**
202
     * Koruna
203
     *
204
     * @var string
205
     */
206
    public const SEK = 'SEK';
207
208
    /**
209
     * Frank
210
     *
211
     * @var string
212
     */
213
    public const CHF = 'CHF';
214
215
    /**
216
     * Baht
217
     *
218
     * @var string
219
     */
220
    public const THB = 'THB';
221
222
    /**
223
     * Lira
224
     *
225
     * @var string
226
     */
227
    public const TRY = 'TRY';
228
229
    /**
230
     * Dolar
231
     *
232
     * @var string
233
     */
234
    public const USD = 'USD';
235
236
    /**
237
     * Libra
238
     *
239
     * @var string
240
     */
241
    public const GBP = 'GBP';
242
243
    /**
244
     * @return array<string>
245
     */
246
    public static function all(): array
247
    {
248
        return [
249
            self::AUD,
250
            self::BRL,
251
            self::BGN,
252
            self::CNY,
253
            self::DKK,
254
            self::EUR,
255
            self::CZK,
256
            self::PHP,
257
            self::HKD,
258
            self::HRK,
259
            self::INR,
260
            self::IDR,
261
            self::ILS,
262
            self::JPY,
263
            self::ZAR,
264
            self::KRW,
265
            self::CAD,
266
            self::HUF,
267
            self::MYR,
268
            self::MXN,
269
            self::XDR,
270
            self::NOK,
271
            self::NZD,
272
            self::PLN,
273
            self::RON,
274
            self::RUB,
275
            self::SGD,
276
            self::SEK,
277
            self::CHF,
278
            self::THB,
279
            self::TRY,
280
            self::USD,
281
            self::GBP,
282
        ];
283
    }
284
285
    /**
286
     * Validate currency code.
287
     *
288
     * @param string $code
289
     *
290
     * @return void
291
     *
292
     * @throws \InvalidArgumentException
293
     */
294
    public static function validateCode(string $code): void
295
    {
296
        if (in_array($code, self::all()) === false) {
297
            throw new InvalidArgumentException('Invalid currency "' . $code . '" has been entered.');
298
        }
299
    }
300
}
301