1. Go to this page and download the library: Download gosuperscript/schema-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/ */
gosuperscript / schema-money example snippets
use Brick\Money\Currency;
use Brick\Money\Money;
use Superscript\Axiom\Money\Types\MonetaryType;
// Create a monetary type for EUR
$eurType = new MonetaryType(Currency::of('EUR'));
// Coerce values to Money objects
$money = $eurType->coerce('100.50')->unwrap()->unwrap();
// Result: Money object with EUR 100.50
// Assert existing Money objects
$result = $eurType->assert(Money::of(50, 'EUR'));
// Result: Ok(Some(Money))
// Format money for display
$formatted = $eurType->format(Money::of(100.50, 'EUR'));
// Result: "€100.50"
use Superscript\Axiom\Money\MoneyParser;
use Brick\Money\Money;
// Parse from "CURRENCY AMOUNT" format
$result = MoneyParser::parse('EUR 100');
$money = $result->unwrap(); // Money object: EUR 100
// Parse from currency symbol format
$result = MoneyParser::parse('£50.25');
$money = $result->unwrap(); // Money object: GBP 50.25
// Parse from "CURRENCY AMOUNT" format
$result = MoneyParser::parse('USD 1000.50');
$money = $result->unwrap(); // Money object: USD 1000.50
// Already a Money object? Just returns it
$existing = Money::of(100, 'EUR');
$result = MoneyParser::parse($existing);
$money = $result->unwrap(); // Same Money object
use Brick\Money\Currency;
use Superscript\Axiom\Money\Types\MinorMonetaryType;
$gbpType = new MinorMonetaryType(Currency::of('GBP'));
// Coerce from minor units (100 pence = £1.00)
$money = $gbpType->coerce(100)->unwrap()->unwrap();
// Result: Money object with GBP 1.00
// Coerce from string of minor units
$money = $gbpType->coerce('2550')->unwrap()->unwrap();
// Result: Money object with GBP 25.50
use Superscript\Axiom\Money\Types\DynamicMonetaryType;
$dynamicType = new DynamicMonetaryType();
// Automatically detects currency
$money = $dynamicType->coerce('USD 100')->unwrap()->unwrap();
// Result: Money object with USD 100
$money = $dynamicType->coerce('€50.25')->unwrap()->unwrap();
// Result: Money object with EUR 50.25
use Brick\Money\Money;
use Superscript\Axiom\Money\Operators\MoneyOverloader;
$overloader = new MoneyOverloader();
$a = Money::of(100, 'EUR');
$b = Money::of(50, 'EUR');
// Addition
$sum = $overloader->evaluate($a, $b, '+');
// Result: EUR 150.00
// Subtraction
$diff = $overloader->evaluate($a, $b, '-');
// Result: EUR 50.00
// Multiplication (multiplies left by the amount from right)
$product = $overloader->evaluate($a, $b, '*');
// Result: EUR 5000.00 (100 * 50)
// Division (divides left by the amount from right)
$quotient = $overloader->evaluate($a, $b, '/');
// Result: EUR 2.00 (100 / 50)
// Comparisons
$isEqual = $overloader->evaluate($a, $b, '=='); // false
$isLess = $overloader->evaluate($b, $a, '<'); // true
$isGreater = $overloader->evaluate($a, $b, '>'); // true
use Brick\Money\Currency;
use Brick\Money\Money;
use Superscript\Axiom\Money\Types\MonetaryIntervalType;
use Superscript\MonetaryInterval\MonetaryInterval;
use Superscript\MonetaryInterval\IntervalNotation;
$intervalType = new MonetaryIntervalType(Currency::of('EUR'));
// Parse interval from string notation
$interval = $intervalType->coerce('[100,200]')->unwrap()->unwrap();
// Result: MonetaryInterval from EUR 100 to EUR 200 (inclusive)
// Create MonetaryInterval directly
$interval = new MonetaryInterval(
left: Money::of(100, 'EUR'),
right: Money::of(200, 'EUR'),
notation: IntervalNotation::CLOSED
);
// Format interval
$formatted = $intervalType->format($interval);
// Result: "[EUR 100.00, EUR 200.00]"
use Superscript\Axiom\Money\Operators\MonetaryIntervalOverloader;
$overloader = new MonetaryIntervalOverloader();
$interval1 = new MonetaryInterval(
left: Money::of(100, 'EUR'),
right: Money::of(200, 'EUR'),
notation: IntervalNotation::CLOSED
);
$interval2 = new MonetaryInterval(
left: Money::of(150, 'EUR'),
right: Money::of(250, 'EUR'),
notation: IntervalNotation::CLOSED
);
// Check if intervals overlap
$overlaps = $overloader->evaluate($interval1, $interval2, '&&');
// Result: true (they overlap from EUR 150 to EUR 200)
// Union of intervals
$union = $overloader->evaluate($interval1, $interval2, '||');
// Result: MonetaryInterval from EUR 100 to EUR 250
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.