PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.17.0
GiveWP – Donation Plugin and Fundraising Platform v4.17.0
4.18.0 4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 All 257 releases
give / vendor / moneyphp / money / src / Currencies / ISOCurrencies.php

ISOCurrencies.php in GiveWP – Donation Plugin and Fundraising Platform 4.17.0, at vendor/moneyphp/money/src/Currencies/ISOCurrencies.php

103 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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