lukam / money
Fowler的Money实现
0.1.0
2019-03-17 16:30 UTC
Requires
- php: >=7.0
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^7.1
This package is auto-updated.
Last update: 2024-09-20 06:34:43 UTC
README
这是一个Fowler的Money模式的基本示例实现。该库使用货币的最小单位执行货币操作,以防止舍入错误。
<?php use Money; $euro = Money::eur(100); $tenEuro = $euro + Money::eur(900); print($tenEuro->format()); // 10,00 € $shares = $tenEuro->allocate([1,1,1]); print($shares[0]->format()); //3,34 € print($shares[1]->format()); //3,33 € print($shares[2]->format()); //3,33 €
用法
实例化
货币金额以货币的最小单位/分表示。(例如,100表示1欧元)。
$euro = Money::eur(100); print($euro->getAmount()); // 100
操作
-
加法
-
减法
-
乘法
-
除法
加法
使用add
方法将两个货币对象的金额相加。加法必须在具有相同货币的对象之间进行。
$fiveEuro = Money::eur(500); $tenEuro = $fiveEuro->add($fiveEuro);
减法
使用subtract
从两个货币对象中减去金额。减法必须在具有相同货币的对象之间进行。
$fiveEuro = Money::eur(500); $zeroEuro = $fiveEuro->subtract($fiveEuro);
乘法
使用multiply
方法进行乘法。
$fiveEuro = Money::eur(500); $tenEuro = $fiveEuro->multiply(2);
除法
使用divide
方法进行除法。
$tenEuro = Money::eur(500); $fiveEuro = $tenEuro->divide(2);
分配
- 分配
分配
根据提供的比例分配货币金额。剩余金额分配给具有最大比例的份额。
$tenEuro = Money::eur(1000); $shares = $tenEuro->allocate([1,1,1]); print($shares[0]->getAmount()); //334 print($shares[1]->getAmount()); //333 print($shares[2]->getAmount()); //333
比较
等于
使用equals
方法比较两个货币对象。当金额或货币类型相同时,该方法将返回false。
$tenEuro = Money::eur(1000); $oneEuro = Money::eur(100); $oneDollar = Money::usd(100); $oneEuro->equals($tenEuro); // false $oneEuro->equals($oneDollar); // false
大于
使用greaterThan
方法检查货币金额是否大于给定的货币金额。
$tenEuro = Money::eur(1000); $oneEuro = Money::eur(100); $tenEuro->greaterThan($oneEuro); // true
大于等于
使用greaterThanOrEqual
方法检查货币金额是否大于或等于给定的货币金额。
$oneEuro = Money::eur(100); $oneEuro->greaterThanOrEqual($oneEuro); // true
小于
使用lessThan
方法检查货币金额是否小于给定的货币金额。
$tenEuro = Money::eur(1000); $oneEuro = Money::eur(100); $oneEuro->lessThan($tenEuro); // true
小于等于
使用lessThanOrEqual
方法检查货币金额是否小于或等于给定的货币金额。
$oneEuro = Money::eur(100); $oneEuro->lessThanOrEqual($oneEuro); // true
格式化
使用format
方法格式化货币。
$oneEuro = Money::eur(100); print($oneEuro->format()); // 1,00 €
测试
phpunit
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。