Open Journal Systems  3.3.0
AggregateMoneyFormatter.php
1 <?php
2 
3 namespace Money\Formatter;
4 
6 use Money\Money;
8 
15 {
19  private $formatters = [];
20 
24  public function __construct(array $formatters)
25  {
26  if (empty($formatters)) {
27  throw new \InvalidArgumentException(sprintf('Initialize an empty %s is not possible', self::class));
28  }
29 
30  foreach ($formatters as $currencyCode => $formatter) {
31  if (false === $formatter instanceof MoneyFormatter) {
32  throw new \InvalidArgumentException('All formatters must implement '.MoneyFormatter::class);
33  }
34 
35  $this->formatters[$currencyCode] = $formatter;
36  }
37  }
38 
42  public function format(Money $money)
43  {
44  $currencyCode = $money->getCurrency()->getCode();
45 
46  if (isset($this->formatters[$currencyCode])) {
47  return $this->formatters[$currencyCode]->format($money);
48  }
49 
50  if (isset($this->formatters['*'])) {
51  return $this->formatters['*']->format($money);
52  }
53 
54  throw new FormatterException('No formatter found for currency '.$currencyCode);
55  }
56 }
Money\Exception\FormatterException
Definition: FormatterException.php:12
Money\Money
Definition: Money.php:16
Money
Money\Formatter\AggregateMoneyFormatter\__construct
__construct(array $formatters)
Definition: AggregateMoneyFormatter.php:27
Money\Formatter
Definition: AggregateMoneyFormatter.php:3
Money\Formatter\AggregateMoneyFormatter
Definition: AggregateMoneyFormatter.php:14
Money\MoneyFormatter
Definition: MoneyFormatter.php:10
Money\Money\getCurrency
getCurrency()
Definition: Money.php:216
Money\Formatter\AggregateMoneyFormatter\format
format(Money $money)
Definition: AggregateMoneyFormatter.php:45