Value Object that represents a monetary value.
composer require tiny-blocks/money
The library exposes a concrete implementation for representing and performing monetary operations.
With the from
method, a new instance of type Money
is created from a valid numeric value. You can provide
a string
, float
or BigNumber
value.
Money::from(value: 10, currency: 'BRL');
Money::from(value: '10', currency: Currency::USD);
Money::from(value: BigDecimal::from(value: '10'), currency: Currency::USD);
Floating point values instantiated from a float
may not be safe, as they are imprecise by design and may result in a
loss of precision. Always prefer to instantiate from a string
, which supports an unlimited amount digits.
Performs an addition operation between this value and another value.
$augend = Money::from(value: '100', currency: 'BRL');
$addend = Money::from(value: '1.50', currency: Currency::BRL);
$result = $augend->add(addend: $addend);
$result->amount->toString(); # 101.50
Performs a subtraction operation between this value and another value.
$minuend = Money::from(value: '10.50', currency: 'EUR');
$subtrahend = Money::from(value: '0.50', currency: Currency::EUR);
$result = $minuend->subtract(subtrahend: $subtrahend);
$result->amount->toString(); # 10.00
Performs a multiplication operation between this value and another value.
$multiplicand = Money::from(value: '5', currency: 'GBP');
$multiplier = Money::from(value: '3.12', currency: Currency::GBP);
$result = $multiplicand->multiply(multiplier: $multiplier);
$result->amount->toString(); # 15.60
Performs a division operation between this value and another value.
$dividend = Money::from(value: '8.99', currency: 'CHF');
$divisor = Money::from(value: '5', currency: Currency::CHF);
$result = $dividend->divide(divisor: $divisor);
$result->amount->toString(); # 1.79
Money is licensed under MIT.
Please follow the contributing guidelines to contribute to the project.