PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.27.0
GiveWP – Donation Plugin and Fundraising Platform v2.27.0
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 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / vendor / moneyphp / money / src / CurrencyPair.php
give / vendor / moneyphp / money / src Last commit date
Calculator 4 years ago Currencies 4 years ago Exception 4 years ago Exchange 4 years ago Formatter 4 years ago PHPUnit 4 years ago Parser 4 years ago Calculator.php 4 years ago Converter.php 4 years ago Currencies.php 4 years ago Currency.php 4 years ago CurrencyPair.php 4 years ago Exception.php 4 years ago Exchange.php 4 years ago Money.php 4 years ago MoneyFactory.php 4 years ago MoneyFormatter.php 4 years ago MoneyParser.php 4 years ago Number.php 4 years ago
CurrencyPair.php
140 lines
1 <?php
2
3 namespace Money;
4
5 /**
6 * Currency Pair holding a base, a counter currency and a conversion ratio.
7 *
8 * @author Mathias Verraes
9 *
10 * @see http://en.wikipedia.org/wiki/Currency_pair
11 */
12 final class CurrencyPair implements \JsonSerializable
13 {
14 /**
15 * Currency to convert from.
16 *
17 * @var Currency
18 */
19 private $baseCurrency;
20
21 /**
22 * Currency to convert to.
23 *
24 * @var Currency
25 */
26 private $counterCurrency;
27
28 /**
29 * @var float
30 */
31 private $conversionRatio;
32
33 /**
34 * @param Currency $baseCurrency
35 * @param Currency $counterCurrency
36 * @param float $conversionRatio
37 *
38 * @throws \InvalidArgumentException If conversion ratio is not numeric
39 */
40 public function __construct(Currency $baseCurrency, Currency $counterCurrency, $conversionRatio)
41 {
42 if (!is_numeric($conversionRatio)) {
43 throw new \InvalidArgumentException('Conversion ratio must be numeric');
44 }
45
46 $this->counterCurrency = $counterCurrency;
47 $this->baseCurrency = $baseCurrency;
48 $this->conversionRatio = (float) $conversionRatio;
49 }
50
51 /**
52 * Creates a new Currency Pair based on "EUR/USD 1.2500" form representation.
53 *
54 * @param string $iso String representation of the form "EUR/USD 1.2500"
55 *
56 * @return CurrencyPair
57 *
58 * @throws \InvalidArgumentException Format of $iso is invalid
59 */
60 public static function createFromIso($iso)
61 {
62 $currency = '([A-Z]{2,3})';
63 $ratio = "([0-9]*\.?[0-9]+)"; // @see http://www.regular-expressions.info/floatingpoint.html
64 $pattern = '#'.$currency.'/'.$currency.' '.$ratio.'#';
65
66 $matches = [];
67
68 if (!preg_match($pattern, $iso, $matches)) {
69 throw new \InvalidArgumentException(
70 sprintf(
71 'Cannot create currency pair from ISO string "%s", format of string is invalid',
72 $iso
73 )
74 );
75 }
76
77 return new self(new Currency($matches[1]), new Currency($matches[2]), $matches[3]);
78 }
79
80 /**
81 * Returns the counter currency.
82 *
83 * @return Currency
84 */
85 public function getCounterCurrency()
86 {
87 return $this->counterCurrency;
88 }
89
90 /**
91 * Returns the base currency.
92 *
93 * @return Currency
94 */
95 public function getBaseCurrency()
96 {
97 return $this->baseCurrency;
98 }
99
100 /**
101 * Returns the conversion ratio.
102 *
103 * @return float
104 */
105 public function getConversionRatio()
106 {
107 return $this->conversionRatio;
108 }
109
110 /**
111 * Checks if an other CurrencyPair has the same parameters as this.
112 *
113 * @param CurrencyPair $other
114 *
115 * @return bool
116 */
117 public function equals(CurrencyPair $other)
118 {
119 return
120 $this->baseCurrency->equals($other->baseCurrency)
121 && $this->counterCurrency->equals($other->counterCurrency)
122 && $this->conversionRatio === $other->conversionRatio
123 ;
124 }
125
126 /**
127 * {@inheritdoc}
128 *
129 * @return array
130 */
131 public function jsonSerialize()
132 {
133 return [
134 'baseCurrency' => $this->baseCurrency,
135 'counterCurrency' => $this->counterCurrency,
136 'ratio' => $this->conversionRatio,
137 ];
138 }
139 }
140