Open Monograph Press  3.3.0
CurrencyList.php
1 <?php
2 
3 namespace Money\Currencies;
4 
8 
14 final class CurrencyList implements Currencies
15 {
21  private $currencies;
22 
23  public function __construct(array $currencies)
24  {
25  foreach ($currencies as $currencyCode => $subunit) {
26  if (empty($currencyCode) || !is_string($currencyCode)) {
27  throw new \InvalidArgumentException(
28  sprintf('Currency code must be a string and not empty. "%s" given', $currencyCode)
29  );
30  }
31 
32  if (!is_int($subunit) || $subunit < 0) {
33  throw new \InvalidArgumentException(
34  sprintf('Currency %s does not have a valid minor unit. Must be a positive integer.', $currencyCode)
35  );
36  }
37  }
38 
39  $this->currencies = $currencies;
40  }
41 
45  public function contains(Currency $currency)
46  {
47  return isset($this->currencies[$currency->getCode()]);
48  }
49 
53  public function subunitFor(Currency $currency)
54  {
55  if (!$this->contains($currency)) {
56  throw new UnknownCurrencyException('Cannot find currency '.$currency->getCode());
57  }
58 
59  return $this->currencies[$currency->getCode()];
60  }
61 
65  public function getIterator()
66  {
67  return new \ArrayIterator(
68  array_map(
69  function ($code) {
70  return new Currency($code);
71  },
72  array_keys($this->currencies)
73  )
74  );
75  }
76 }
Money\Currencies
Definition: AggregateCurrencies.php:3
Money\Currencies\CurrencyList\__construct
__construct(array $currencies)
Definition: CurrencyList.php:26
Money\Currencies\CurrencyList\contains
contains(Currency $currency)
Definition: CurrencyList.php:48
Money\Currencies\CurrencyList
Definition: CurrencyList.php:14
Money\Currencies\CurrencyList\subunitFor
subunitFor(Currency $currency)
Definition: CurrencyList.php:56
Money\Currency
Definition: vendor/moneyphp/money/src/Currency.php:14
Money\Currency\getCode
getCode()
Definition: vendor/moneyphp/money/src/Currency.php:47
Money\Currencies\CurrencyList\getIterator
getIterator()
Definition: CurrencyList.php:68
Money\Currencies
Definition: Currencies.php:12
Money\Exception\UnknownCurrencyException
Definition: UnknownCurrencyException.php:12
Currency
Basic class describing a currency.
Definition: Currency.inc.php:24