2017 © Pedro Peláez
 

library fiat

Money, Currency and Accounting

image

assimtech/fiat

Money, Currency and Accounting

  • Wednesday, October 19, 2016
  • by kralos
  • Repository
  • 1 Watchers
  • 0 Stars
  • 820 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 7 Versions
  • 0 % Grown

The README.md

Fiat

Build Status Scrutinizer Code Quality Code Coverage, (*1)

Provides models for representing Money, Currency and an Accountant performing arithmetic on Money without causing rounding errors, (*2)

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, (*3)

{{ 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, (*4)

The Versions