PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.14.2
GiveWP – Donation Plugin and Fundraising Platform v4.14.2
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 1 year ago Currencies 1 year ago Exception 1 year ago Exchange 1 year ago Formatter 1 year ago PHPUnit 1 year ago Parser 1 year ago Calculator.php 4 years ago Converter.php 1 year ago Currencies.php 1 year ago Currency.php 1 year ago CurrencyPair.php 1 year ago Exception.php 4 years ago Exchange.php 1 year ago Money.php 1 year ago MoneyFactory.php 4 years ago MoneyFormatter.php 1 year ago MoneyParser.php 4 years ago Number.php 1 year ago
CurrencyPair.php
131 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 float $conversionRatio
35 *
36 * @throws \InvalidArgumentException If conversion ratio is not numeric
37 */
38 public function __construct(Currency $baseCurrency, Currency $counterCurrency, $conversionRatio)
39 {
40 if (!is_numeric($conversionRatio)) {
41 throw new \InvalidArgumentException('Conversion ratio must be numeric');
42 }
43
44 $this->counterCurrency = $counterCurrency;
45 $this->baseCurrency = $baseCurrency;
46 $this->conversionRatio = (float) $conversionRatio;
47 }
48
49 /**
50 * Creates a new Currency Pair based on "EUR/USD 1.2500" form representation.
51 *
52 * @param string $iso String representation of the form "EUR/USD 1.2500"
53 *
54 * @return CurrencyPair
55 *
56 * @throws \InvalidArgumentException Format of $iso is invalid
57 */
58 public static function createFromIso($iso)
59 {
60 $currency = '([A-Z]{2,3})';
61 $ratio = "([0-9]*\.?[0-9]+)"; // @see http://www.regular-expressions.info/floatingpoint.html
62 $pattern = '#'.$currency.'/'.$currency.' '.$ratio.'#';
63
64 $matches = [];
65
66 if (!preg_match($pattern, $iso, $matches)) {
67 throw new \InvalidArgumentException(sprintf('Cannot create currency pair from ISO string "%s", format of string is invalid', $iso));
68 }
69
70 return new self(new Currency($matches[1]), new Currency($matches[2]), $matches[3]);
71 }
72
73 /**
74 * Returns the counter currency.
75 *
76 * @return Currency
77 */
78 public function getCounterCurrency()
79 {
80 return $this->counterCurrency;
81 }
82
83 /**
84 * Returns the base currency.
85 *
86 * @return Currency
87 */
88 public function getBaseCurrency()
89 {
90 return $this->baseCurrency;
91 }
92
93 /**
94 * Returns the conversion ratio.
95 *
96 * @return float
97 */
98 public function getConversionRatio()
99 {
100 return $this->conversionRatio;
101 }
102
103 /**
104 * Checks if an other CurrencyPair has the same parameters as this.
105 *
106 * @return bool
107 */
108 public function equals(CurrencyPair $other)
109 {
110 return
111 $this->baseCurrency->equals($other->baseCurrency)
112 && $this->counterCurrency->equals($other->counterCurrency)
113 && $this->conversionRatio === $other->conversionRatio
114 ;
115 }
116
117 /**
118 * {@inheritdoc}
119 *
120 * @return array
121 */
122 public function jsonSerialize()
123 {
124 return [
125 'baseCurrency' => $this->baseCurrency,
126 'counterCurrency' => $this->counterCurrency,
127 'ratio' => $this->conversionRatio,
128 ];
129 }
130 }
131