assimtech / fiat
Money, Currency and Accounting
3.1.1
2020-10-19 23:06 UTC
Requires
- php: >=7.1
- symfony/intl: ^4.0|^5.0
- twig/twig: ^2.0|^3.0
Requires (Dev)
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Provides models for representing Money, Currency and an Accountant performing arithmetic on Money without causing rounding errors
The Models
Currency
$usd = new Assimtech\Fiat\Currency('USD'); echo (string)$usd; // Outputs USD echo $usd->getFractionDigits(); // Outputs 2 $jpy = new Assimtech\Fiat\Currency('JPY'); echo $jpy->getFractionDigits(); // Outputs 0 $iqd = new Assimtech\Fiat\Currency('IQD'); echo $iqd->getFractionDigits(); // Outputs 3
Money
// assuming Locale is en-US $money = new Assimtech\Fiat\Money(pi(), $usd); echo (string)$money; // Outputs 3.14 USD echo $money->getFormattedAmount(); // Outputs 3.14 echo $money->getFormattedAmount('de-DE'); // Outputs 3,14
The Accountant
$accountant = new Assimtech\Fiat\Accountant(); $threeUSD = $accountant->add($oneUSD, $twoUSD); $sixUSD = $accountant->subtract($tenUSD, $fourUSD); $eightUSD = $accountant->multiply($fourUSD, 2); $threeUSD = $accountant->divide($nineUSD, 3); $sixUSD = $accountant->sum([ $oneUSD, $twoUSD, $threeUSD, ]);
Twig extension
The accountant is also exposed as a Twig extension
{{ add_money(money1, money2) }}
{{ subtract_money(money1, money2) }}
{{ multiply_money(money, fraction) }}
{{ divide_money(money, fraction) }}
{{ sum_money([ money1, money2, money3 ]) }}
Frameworks
Please see FiatBundle for integration with Symfony 4,5