PHP code example of leancaptain / money

1. Go to this page and download the library: Download leancaptain/money library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

leancaptain / money example snippets


use LeanCaptain\Money\Currency;
use LeanCaptain\Money\Money;

$money = Money::of('1250.50', Currency::BDT);

$money->minorAmount(); // 125050
$money->toDecimal();   // "1250.50"
$money->currency();    // Currency::BDT

Money::of('19.99', Currency::USD);
Money::of(100, Currency::BDT);

$money = Money::of('125.50', Currency::BDT);

$money->minorAmount(); // 12550

$money = Money::fromMinor(12550, Currency::BDT);

$money->toDecimal(); // "125.50"

Currency::BDT->minorUnit(); // 2
Currency::USD->minorUnit(); // 2
Currency::JPY->minorUnit(); // 0

use LeanCaptain\Money\Contracts\CurrencyContract;

enum AppCurrency: string implements CurrencyContract
{
    case BDT = 'BDT';
    case USD = 'USD';

    public function code(): string
    {
        return $this->value;
    }

    public function minorUnit(): int
    {
        return 2;
    }
}

$money = Money::of('100.00', AppCurrency::BDT);

$total = Money::of('100.50', Currency::BDT)
    ->add(Money::of('50.25', Currency::BDT));

$total->toDecimal(); // "150.75"

$balance = Money::of('100.00', Currency::BDT)
    ->subtract(Money::of('25.50', Currency::BDT));

$balance->toDecimal(); // "74.50"

$result = Money::of('100.00', Currency::BDT)
    ->multiply('1.15');

$result->toDecimal(); // "115.00"

$result = Money::of('100.00', Currency::BDT)
    ->divide(4);

$result->toDecimal(); // "25.00"

use LeanCaptain\Money\Exceptions\RoundingRequired;

Money::of('10.999', Currency::BDT);
// throws RoundingRequired

use LeanCaptain\Money\RoundingMode;

$money = Money::of(
    '10.999',
    Currency::BDT,
    RoundingMode::HALF_UP,
);

$money->toDecimal(); // "11.00"

$result = Money::of('10.01', Currency::BDT)
    ->divide(2, RoundingMode::HALF_UP);

$result->toDecimal(); // "5.01"

$first = Money::of('100.00', Currency::BDT);
$second = Money::of('50.00', Currency::BDT);

$first->equals($second);               // false
$first->isGreaterThan($second);        // true
$first->isGreaterThanOrEqual($second); // true
$first->isLessThan($second);           // false
$first->isLessThanOrEqual($second);    // false

$money->isZero();
$money->isPositive();
$money->isNegative();

Money::of('100', Currency::BDT)
    ->add(Money::of('100', Currency::USD));

// throws CurrencyMismatch

Money::of('100', Currency::BDT)
    ->negate()
    ->toDecimal();

// "-100.00"

Money::of('-100', Currency::BDT)
    ->absolute()
    ->toDecimal();

// "100.00"

use LeanCaptain\Money\Currency;
use LeanCaptain\Money\MoneyFactory;
use LeanCaptain\Money\RoundingMode;

$factory = new MoneyFactory(
    Currency::BDT,
    RoundingMode::HALF_UP,
);

$money = $factory->of('100.50');

$money = $factory->fromMinor(10050);

$money->toDecimal(); // "100.50"

$money = Money::of('1250.50', Currency::BDT);

(string) $money;
// "1250.50 BDT"

$money = Money::of('1250.50', Currency::BDT);

json_encode($money);

Money::of('invalid', Currency::BDT);

Money::of('10.999', Currency::BDT);

Money::of('100', Currency::BDT)
    ->add(Money::of('100', Currency::USD));