Server IP : 66.29.132.124 / Your IP : 18.118.33.239 Web Server : LiteSpeed System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : wavevlvu ( 1524) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/wavevlvu/book24.ng/vendor/moneyphp/money/src/ |
Upload File : |
<?php namespace Money; /** * Currency Pair holding a base, a counter currency and a conversion ratio. * * @author Mathias Verraes * * @see http://en.wikipedia.org/wiki/Currency_pair */ final class CurrencyPair implements \JsonSerializable { /** * Currency to convert from. * * @var Currency */ private $baseCurrency; /** * Currency to convert to. * * @var Currency */ private $counterCurrency; /** * @var float */ private $conversionRatio; /** * @param Currency $baseCurrency * @param Currency $counterCurrency * @param float $conversionRatio * * @throws \InvalidArgumentException If conversion ratio is not numeric */ public function __construct(Currency $baseCurrency, Currency $counterCurrency, $conversionRatio) { if (!is_numeric($conversionRatio)) { throw new \InvalidArgumentException('Conversion ratio must be numeric'); } $this->counterCurrency = $counterCurrency; $this->baseCurrency = $baseCurrency; $this->conversionRatio = (float) $conversionRatio; } /** * Creates a new Currency Pair based on "EUR/USD 1.2500" form representation. * * @param string $iso String representation of the form "EUR/USD 1.2500" * * @return CurrencyPair * * @throws \InvalidArgumentException Format of $iso is invalid */ public static function createFromIso($iso) { $currency = '([A-Z]{2,3})'; $ratio = "([0-9]*\.?[0-9]+)"; // @see http://www.regular-expressions.info/floatingpoint.html $pattern = '#'.$currency.'/'.$currency.' '.$ratio.'#'; $matches = []; if (!preg_match($pattern, $iso, $matches)) { throw new \InvalidArgumentException( sprintf( 'Cannot create currency pair from ISO string "%s", format of string is invalid', $iso ) ); } return new self(new Currency($matches[1]), new Currency($matches[2]), $matches[3]); } /** * Returns the counter currency. * * @return Currency */ public function getCounterCurrency() { return $this->counterCurrency; } /** * Returns the base currency. * * @return Currency */ public function getBaseCurrency() { return $this->baseCurrency; } /** * Returns the conversion ratio. * * @return float */ public function getConversionRatio() { return $this->conversionRatio; } /** * Checks if an other CurrencyPair has the same parameters as this. * * @param CurrencyPair $other * * @return bool */ public function equals(CurrencyPair $other) { return $this->baseCurrency->equals($other->baseCurrency) && $this->counterCurrency->equals($other->counterCurrency) && $this->conversionRatio === $other->conversionRatio ; } /** * {@inheritdoc} * * @return array */ public function jsonSerialize() { return [ 'baseCurrency' => $this->baseCurrency, 'counterCurrency' => $this->counterCurrency, 'ratio' => $this->conversionRatio, ]; } }