Money Value Object
Value object for handling monetary values, (*1)
, (*2)
Installation
Via Composer:, (*3)
composer require wsw/money
Usage
Instantiating a value:, (*4)
``` php
<?php, (*5)
use WSW\Money\Currency;
use WSW\Money\Money;, (*6)
$money = new Money('1500.9999', new Currency('USD'));, (*7)
Output values:
``` php
<?php
use WSW\Money\Currency;
use WSW\Money\Money;
$money = new Money("1500.9999", new Currency("USD"));
echo $money->getAmount(); // (string) 1500.999900
echo $money->getMicros(); // (integer) 1500999900
echo $money->getTruncate(); // (string) 1500.99
echo $money->getRound(); // (string) 1501.00
echo $money->getFormat(); // (string) 1.501,00
echo $money; // (string) 1.501,00
We verify that the values are equal:
``` php
<?php, (*8)
use WSW\Money\Currency;
use WSW\Money\Money;, (*9)
$money = new Money("1500.00", new Currency("USD"));
$money2 = new Money("1500.00", new Currency("USD"));
$money3 = new Money("1000.00", new Currency("USD"));, (*10)
var_dump($money->equals($money2)); // bool(true)
var_dump($money->equals($money3)); // bool(false), (*11)
Compare values:
``` php
<?php
use WSW\Money\Currency;
use WSW\Money\Money;
$money = new Money("1500.00", new Currency("USD"));
$money2 = new Money("1500.00", new Currency("USD"));
$money3 = new Money("1000.00", new Currency("USD"));
// Returns zero (0) when values and currencies are equal.
var_dump($money->compare($money2)); // int(0)
// Returns one (1) when the left object has the value greater than the right object.
var_dump($money->compare($money3)); // int(1)
// Returns minus one (-1) when the right object has the value greater than the left object.
var_dump($money3->compare($money)); // int(-1)
Add value:
``` php
<?php, (*12)
use WSW\Money\Currency;
use WSW\Money\Money;, (*13)
$money = new Money('100', new Currency('USD'));
$addValue = new Money('50', new Currency('USD'));, (*14)
$newMoney = $money->add($addValue);, (*15)
echo $newMoney->getAmount(); // (string) 150.000000
echo $newMoney->getTruncate(); // (string) 150.00
echo $newMoney->getRound(); // (string) 150.00
echo $newMoney->getFormat(); // (string) 150,00, (*16)
echo $newMoney; // (string) 150,00, (*17)
Add percentage value:
``` php
<?php
use WSW\Money\Currency;
use WSW\Money\Money;
use WSW\Money\Percentage;
$money = new Money('100', new Currency('USD'));
$percent = new Percentage("75%");
$newMoney = $money->addPercent($percent);
echo $newMoney->getAmount(); // (string) 175.000000
echo $newMoney->getTruncate(); // (string) 175.00
echo $newMoney->getRound(); // (string) 175.00
echo $newMoney->getFormat(); // (string) 175,00
echo $newMoney; // (string) 175,00
Subtract value:
``` php
<?php, (*18)
use WSW\Money\Currency;
use WSW\Money\Money;, (*19)
$money = new Money('100', new Currency('USD'));
$subValue = new Money('60.75', new Currency('USD'));, (*20)
$newMoney = $money->sub($subValue);, (*21)
echo $newMoney->getAmount(); // (string) 39.250000
echo $newMoney->getTruncate(); // (string) 39.25
echo $newMoney->getRound(); // (string) 39.25
echo $newMoney->getFormat(); // (string) 39,25, (*22)
echo $newMoney; // (string) 39,25, (*23)
Subtract percentage value:
``` php
<?php
use WSW\Money\Currency;
use WSW\Money\Money;
use WSW\Money\Percentage;
$money = new Money('100', new Currency('USD'));
$percent = new Percentage("75%");
$newMoney = $money->subPercent($percent);
echo $newMoney->getAmount(); // (string) 25.000000
echo $newMoney->getTruncate(); // (string) 25.00
echo $newMoney->getRound(); // (string) 25.00
echo $newMoney->getFormat(); // (string) 25,00
echo $newMoney; // (string) 25,00
Testing
bash
$ composer test
, (*24)
Security
If you discover any security related issues, please email ronaldo@whera.com.br instead of using the issue tracker., (*25)
Credits
License
The MIT License (MIT). Please see License File for more information., (*26)