Operation

Attention

Operations with Money objects are always immutable. See Immutability.

Addition & Subtraction

Additions can be performed using add().

$value1 = Money::EUR(800);       // €8.00
$value2 = Money::EUR(500);       // €5.00

$result = $value1->add($value2); // €13.00

add() accepts variadic arguments as well.

$value1 = Money::EUR(800);                // €8.00
$value2 = Money::EUR(500);                // €5.00
$value3 = Money::EUR(600);                // €6.00

$result = $value1->add($value2, $value3); // €19.00

Subtractions can be performed using subtract().

$value1 = Money::EUR(800);            // €8.00
$value2 = Money::EUR(500);            // €5.00

$result = $value1->subtract($value2); // €3.00

subtract() accepts variadic arguments as well.

$value1 = Money::EUR(1400);                    // €14.00
$value2 = Money::EUR(500);                     // €5.00
$value3 = Money::EUR(600);                     // €6.00

$result = $value1->subtract($value2, $value3); // €3.00

Multiplication & Division

Multiplications can be performed using multiply().

$value = Money::EUR(800);       // €8.00

$result = $value->multiply(2);  // €16.00

Divisions can be performed using divide().

$value = Money::EUR(800);       // €8.00

$result = $value->divide(2);    // €4.00

Modulus

Modulus operations can be performed using mod().

$value = Money::EUR(830);        // €8.30
$divisor = Money::EUR(300);      // €3.00

$result = $value->mod($divisor); // €2.30

Rounding Modes

A number of rounding modes are available for Multiplication & Division above.

  • Money::ROUND_HALF_DOWN
  • Money::ROUND_HALF_EVEN
  • Money::ROUND_HALF_ODD
  • Money::ROUND_HALF_UP
  • Money::ROUND_UP
  • Money::ROUND_DOWN
  • Money::ROUND_HALF_POSITIVE_INFINITY
  • Money::ROUND_HALF_NEGATIVE_INFINITY

Absolute Value

absolute() provides the absolute value of a Money object.

$value = Money::EUR(-800);       // -€8.00

$result = $value->absolute();    // €8.00

Ratio Of

ratioOf() provides the ratio of a Money object in comparison to another Money object.

$three = Money::EUR(300);        // €3.00
$six = Money::EUR(600);          // €6.00

$result = $three->ratioOf($six); // 0.5
$result = $six->ratioOf($three); // 2