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
// 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
use Superscript\Axiom\Money\Types\DynamicMonetaryType;
$dynamicType = new DynamicMonetaryType();
$money = $dynamicType->coerce('USD 100')->unwrap()->unwrap();
// Result: Money object with USD 100
use Brick\Money\Money;
use Superscript\Axiom\Dialect;
use Superscript\Axiom\Expression;
use Superscript\Axiom\Money\MoneyExtension;
use Superscript\Axiom\Money\Types\MonetaryType;
use Superscript\Axiom\Sources\InfixExpression;
use Superscript\Axiom\Sources\SymbolSource;
$dialect = Dialect::core()->with(new MoneyExtension(['GBP', 'USD', 'EUR']));
$expression = new Expression(
new InfixExpression(new SymbolSource('a'), '+', new SymbolSource('b')),
dialect: $dialect,
declarations: ['a' => new MonetaryType(Currency::of('GBP')), 'b' => new MonetaryType(Currency::of('GBP'))],
);
$program = $expression->compile()->unwrap();
$program(['a' => Money::of(1, 'GBP'), 'b' => Money::of(2, 'GBP')])->unwrap()->unwrap(); // GBP 3.00
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 an interval from string notation
$interval = $intervalType->coerce('[100,200]')->unwrap()->unwrap();
// Or construct one directly
$interval = new MonetaryInterval(
left: Money::of(100, 'EUR'),
right: Money::of(200, 'EUR'),
notation: IntervalNotation::Closed,
);
$intervalType->format($interval); // "[EUR 100.00, EUR 200.00]"
$dialect = Dialect::core()->with(new MoneyExtension(['EUR']));
$expression = new Expression(
new InfixExpression(new SymbolSource('range'), '>', new SymbolSource('amount')),
dialect: $dialect,
declarations: [
'range' => new MonetaryIntervalType(Currency::of('EUR')),
'amount' => new MonetaryType(Currency::of('EUR')),
],
);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.