assimtech / fiat
Money, Currency and Accounting
Installs: 1 652
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: >=7.1
- symfony/intl: ^4.0|^5.0
- twig/twig: ^2.0|^3.0
Requires (Dev)
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