PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / trunk
Booking for Appointments and Events Calendar – Amelia vtrunk
2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / vendor / moneyphp / money / src / Formatter / IntlMoneyFormatter.php
ameliabooking / vendor / moneyphp / money / src / Formatter Last commit date
AggregateMoneyFormatter.php 6 years ago BitcoinMoneyFormatter.php 2 years ago DecimalMoneyFormatter.php 2 years ago IntlLocalizedDecimalFormatter.php 2 years ago IntlMoneyFormatter.php 2 years ago
IntlMoneyFormatter.php
66 lines
1 <?php
2
3 namespace Money\Formatter;
4
5 use Money\Currencies;
6 use Money\Money;
7 use Money\MoneyFormatter;
8
9 /**
10 * Formats a Money object using intl extension.
11 *
12 * @author Frederik Bosch <f.bosch@genkgo.nl>
13 */
14 final class IntlMoneyFormatter implements MoneyFormatter
15 {
16 /**
17 * @var \NumberFormatter
18 */
19 private $formatter;
20
21 /**
22 * @var Currencies
23 */
24 private $currencies;
25
26 public function __construct(\NumberFormatter $formatter, Currencies $currencies)
27 {
28 $this->formatter = $formatter;
29 $this->currencies = $currencies;
30 }
31
32 /**
33 * {@inheritdoc}
34 */
35 public function format(Money $money)
36 {
37 $valueBase = $money->getAmount();
38 $negative = false;
39
40 if ($valueBase[0] === '-') {
41 $negative = true;
42 $valueBase = substr($valueBase, 1);
43 }
44
45 $subunit = $this->currencies->subunitFor($money->getCurrency());
46 $valueLength = strlen($valueBase);
47
48 if ($valueLength > $subunit) {
49 $formatted = substr($valueBase, 0, $valueLength - $subunit);
50 $decimalDigits = substr($valueBase, $valueLength - $subunit);
51
52 if (strlen($decimalDigits) > 0) {
53 $formatted .= '.'.$decimalDigits;
54 }
55 } else {
56 $formatted = '0.'.str_pad('', $subunit - $valueLength, '0').$valueBase;
57 }
58
59 if ($negative === true) {
60 $formatted = '-'.$formatted;
61 }
62
63 return $this->formatter->formatCurrency($formatted, $money->getCurrency()->getCode());
64 }
65 }
66