aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/commerceguys/intl/src/Currency/Currency.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/commerceguys/intl/src/Currency/Currency.php')
-rw-r--r--vendor/commerceguys/intl/src/Currency/Currency.php133
1 files changed, 62 insertions, 71 deletions
diff --git a/vendor/commerceguys/intl/src/Currency/Currency.php b/vendor/commerceguys/intl/src/Currency/Currency.php
index 6f9256bf0..28329795c 100644
--- a/vendor/commerceguys/intl/src/Currency/Currency.php
+++ b/vendor/commerceguys/intl/src/Currency/Currency.php
@@ -2,7 +2,10 @@
namespace CommerceGuys\Intl\Currency;
-class Currency implements CurrencyEntityInterface
+/**
+ * Represents a currency.
+ */
+final class Currency
{
/**
* The alphanumeric currency code.
@@ -37,47 +40,67 @@ class Currency implements CurrencyEntityInterface
*
* @var int
*/
- protected $fractionDigits;
+ protected $fractionDigits = 2;
/**
- * The currency locale (i.e. "en_US").
- *
- * The currency name and symbol are locale specific.
+ * The locale (i.e. "en_US").
*
* @var string
*/
protected $locale;
/**
- * Returns the string representation of the currency.
+ * Creates a new Currency instance.
*
- * @return string
+ * @param array $definition The definition array.
*/
- public function __toString()
+ public function __construct(array $definition)
{
- return $this->getCurrencyCode();
+ foreach (['currency_code', 'name', 'numeric_code', 'locale'] as $requiredProperty) {
+ if (empty($definition[$requiredProperty])) {
+ throw new \InvalidArgumentException(sprintf('Missing required property "%s".', $requiredProperty));
+ }
+ }
+ if (!isset($definition['symbol'])) {
+ $definition['symbol'] = $definition['currency_code'];
+ }
+
+ $this->currencyCode = $definition['currency_code'];
+ $this->name = $definition['name'];
+ $this->numericCode = $definition['numeric_code'];
+ $this->symbol = $definition['symbol'];
+ if (isset($definition['fraction_digits'])) {
+ $this->fractionDigits = $definition['fraction_digits'];
+ }
+ $this->locale = $definition['locale'];
}
/**
- * {@inheritdoc}
+ * Gets the string representation of the currency.
+ *
+ * @return string
*/
- public function getCurrencyCode()
+ public function __toString()
{
return $this->currencyCode;
}
/**
- * {@inheritdoc}
+ * Gets the alphabetic currency code.
+ *
+ * @return string
*/
- public function setCurrencyCode($currencyCode)
+ public function getCurrencyCode()
{
- $this->currencyCode = $currencyCode;
-
- return $this;
+ return $this->currencyCode;
}
/**
- * {@inheritdoc}
+ * Gets the currency name.
+ *
+ * This value is locale specific.
+ *
+ * @return string
*/
public function getName()
{
@@ -85,17 +108,12 @@ class Currency implements CurrencyEntityInterface
}
/**
- * {@inheritdoc}
- */
- public function setName($name)
- {
- $this->name = $name;
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
+ * Gets the numeric currency code.
+ *
+ * The numeric code has three digits, and the first one can be a zero,
+ * hence the need to pass it around as a string.
+ *
+ * @return string
*/
public function getNumericCode()
{
@@ -103,17 +121,11 @@ class Currency implements CurrencyEntityInterface
}
/**
- * {@inheritdoc}
- */
- public function setNumericCode($numericCode)
- {
- $this->numericCode = $numericCode;
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
+ * Gets the currency symbol.
+ *
+ * This value is locale specific.
+ *
+ * @return string
*/
public function getSymbol()
{
@@ -121,17 +133,12 @@ class Currency implements CurrencyEntityInterface
}
/**
- * {@inheritdoc}
- */
- public function setSymbol($symbol)
- {
- $this->symbol = $symbol;
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
+ * Gets the number of fraction digits.
+ *
+ * Used when rounding or formatting an amount for display.
+ * Actual storage precision can be greater.
+ *
+ * @return int
*/
public function getFractionDigits()
{
@@ -139,30 +146,14 @@ class Currency implements CurrencyEntityInterface
}
/**
- * {@inheritdoc}
- */
- public function setFractionDigits($fractionDigits)
- {
- $this->fractionDigits = $fractionDigits;
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
+ * Gets the locale.
+ *
+ * The currency name and symbol are locale specific.
+ *
+ * @return string
*/
public function getLocale()
{
return $this->locale;
}
-
- /**
- * {@inheritdoc}
- */
- public function setLocale($locale)
- {
- $this->locale = $locale;
-
- return $this;
- }
}