nilz / money
此包已被 废弃 且不再维护。未建议任何替代包。
货币类的实现
1.10
2023-10-20 13:50 UTC
Requires
- php: >=7.4
- ext-intl: *
- alcohol/iso4217: ~4.0
Requires (Dev)
- phpunit/phpunit: ~9.0
README
使用最小货币单位整数进行计算的扩展货币对象的实际应用实现
创建此库的原因是其他现有解决方案存在以下一个或多个缺点:
- 缺少Money类的扩展性
- 依赖于固定的货币类
- 缺少如格式化和转换货币的方法
- 实现中的错误导致四舍五入错误和在例如累加价格时缺少分
- 库不再维护
免费使用。使用它或放弃它。
示例
创建货币对象
use Nilz\Money\Money; use Nilz\Money\Currency\ISO4217Currency; $money = new Money(420, new ISO4217Currency('EUR')); $money = Money::fromDefaultUnitAmount('4.20', 'EUR');
获取货币对象的金额
//420 echo $money->getAmount(); //4.20 echo $money->getDefaultUnitAmount(); //4,20 € echo $money->getFormattedAmount('de_DE');
累加两个货币对象
$a = Money::fromDefaultUnitAmount('4.20', 'EUR'); $b = Money::fromDefaultUnitAmount('2.10', 'EUR'); $c = $a->add($b); //6.30 echo $c->getAmount(); //4.20 echo $a->getAmount(); //2.10 echo $b->getAmount();
其他算术示例
$a = Money::fromDefaultUnitAmount('4.20', 'EUR'); $b = Money::fromDefaultUnitAmount('2.10', 'EUR'); $a->subtract($b); $a->multiply(1.2); $a->divide(1.2);
如果您需要其他方法进行计算,可以轻松扩展货币对象或提交一个扩展它的pull request。
使用自定义货币
use Nilz\Money\Currency\Currency; //alpha3 code, factor for smallest unit representation, decimal digits to round two $money = new Money(420, new Currency('EUR', 100, 2));
您也可以通过实现CurrencyInterface来实现自定义货币对象。