PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.4.8
Booking for Appointments and Events Calendar – Amelia v2.4.8
2.4.8 2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / vendor / moneyphp / money / src / Currencies / ISOCurrencies.php
ameliabooking / vendor / moneyphp / money / src / Currencies Last commit date
AggregateCurrencies.php 2 years ago BitcoinCurrencies.php 2 years ago CachedCurrencies.php 2 years ago CurrencyList.php 2 years ago ISOCurrencies.php 2 years ago
ISOCurrencies.php
103 lines
1 <?php
2
3 namespace Money\Currencies;
4
5 use Money\Currencies;
6 use Money\Currency;
7 use Money\Exception\UnknownCurrencyException;
8
9 /**
10 * List of supported ISO 4217 currency codes and names.
11 *
12 * @author Mathias Verraes
13 */
14 final class ISOCurrencies implements Currencies
15 {
16 /**
17 * Map of known currencies indexed by code.
18 *
19 * @var array
20 */
21 private static $currencies;
22
23 /**
24 * {@inheritdoc}
25 */
26 public function contains(Currency $currency)
27 {
28 return isset($this->getCurrencies()[$currency->getCode()]);
29 }
30
31 /**
32 * {@inheritdoc}
33 */
34 public function subunitFor(Currency $currency)
35 {
36 if (!$this->contains($currency)) {
37 throw new UnknownCurrencyException('Cannot find ISO currency '.$currency->getCode());
38 }
39
40 return $this->getCurrencies()[$currency->getCode()]['minorUnit'];
41 }
42
43 /**
44 * Returns the numeric code for a currency.
45 *
46 * @return int
47 *
48 * @throws UnknownCurrencyException If currency is not available in the current context
49 */
50 public function numericCodeFor(Currency $currency)
51 {
52 if (!$this->contains($currency)) {
53 throw new UnknownCurrencyException('Cannot find ISO currency '.$currency->getCode());
54 }
55
56 return $this->getCurrencies()[$currency->getCode()]['numericCode'];
57 }
58
59 /**
60 * @return \Traversable
61 */
62 #[\ReturnTypeWillChange]
63 public function getIterator()
64 {
65 return new \ArrayIterator(
66 array_map(
67 function ($code) {
68 return new Currency($code);
69 },
70 array_keys($this->getCurrencies())
71 )
72 );
73 }
74
75 /**
76 * Returns a map of known currencies indexed by code.
77 *
78 * @return array
79 */
80 private function getCurrencies()
81 {
82 if (null === self::$currencies) {
83 self::$currencies = $this->loadCurrencies();
84 }
85
86 return self::$currencies;
87 }
88
89 /**
90 * @return array
91 */
92 private function loadCurrencies()
93 {
94 $file = __DIR__.'/../../resources/currency.php';
95
96 if (file_exists($file)) {
97 return require $file;
98 }
99
100 throw new \RuntimeException('Failed to load currency ISO codes.');
101 }
102 }
103