doxadoxa / money-lib
PHP的简单货币库。
v1.4.6
2020-07-22 16:32 UTC
Requires
- php: ^7.3
- brick/math: ^0.8.15
Requires (Dev)
- phpunit/phpunit: ^9.0
README
使用GMP实现的简单Fouler Money Pattern。您也可以使用此库进行加密货币。
如何安装
通过composer安装
composer require doxadoxa/money-lib
如何使用
基本
简单这样做
use Money\Currency; use Money\Money; $bitcoin = new Currency('BTC', 8); $amount = Money::make( $bitcoin, 0.1858); echo $amount->getAmount(); // (float) 0.1858 echo $amount->getStringAmount(); // (string) "18580000"
此外,您还可以从您想要的任何精度中获取货币
use Money\Currency; use Money\Money; $ethereum = new Currency('ETH', 18); $amount = Money::make( $ethereum, 0.000000000000000005); echo $amount->getAmount(); // (float) 5.0E-18 echo $amount->getStringAmount(); // (string) "5"
可用操作
您可以使用默认的数学运算符在货币空间上使用——加法和减法。所有操作都是副作用安全的。
use Money\Currency; use Money\Money; $ethereum = new Currency('ETH', 18); $usd = new Currency('USD', 2); $amount = Money::make( $ethereum, 0.05 ); // Add operation $newAmount = $amount->add( Money::make( $ethereum, 0.005 ) ); echo $newAmount->getAmount(); // (float) 0.055 // Sub operation $newAmount = $amount->sub( Money::make( $ethereum, 0.005 ) ); echo $newAmount->getAmount(); // (float) 0.045 // Comparisons $amount = Money::make( $usd, 10 ); $newAmount = Money::make( $usd, 10); $nullAmount = Money::make( $ethereum, 0); $newNullAmount = Money::make( $usd, 0); $amount->equals( $newAmount ); // (bool) true $nullAmount->equals($newNullAmount); // (bool) true $amount->strictEquals( $newAmount ); // (bool) true $nullAmount->strictEquals($newNullAmount); // (bool) false $newAmount = Money::make( $usd, 20 ); $amount->less( $newAmount ); // (bool) true $amount->more( $newAmount ); // (bool) false
ISO4217
该库支持ISO4217货币的自动检测,以添加一些功能,如符号格式化(如将USD符号更改为$),货币的默认小数位数以及获取国家或全名等额外参数。您可以通过货币对象的getIso4217()
方法访问ISO4217对象。
格式化输出
您可以通过将货币转换为字符串来简单地格式化您的货币,使用format
方法。
use Money\Currency; use Money\Money; $usd = new Currency('USD'); $money = Money::make( $usd, 1000 ); echo $money->format();// $ 1,000.00
此外,您可以通过继承Formatter
类并创建自己的格式来创建您自己的格式器。或者,您可以在格式化器构造函数中简单地更改格式。
use Money\Formatters\CurrencyFormatter; use Money\Currency; use Money\Money; $usd = new Currency('USD'); $formatter = new CurrencyFormatter(":amount:symbol", '.', '', 0); $usd->setFormatter( $formatter ); $money = Money::make( $usd, 1000); echo $money->format(); // 1000$