akaunting / laravel-money
Laravel项目的货币格式化和转换包
5.2.1
2024-07-23 15:01 UTC
Requires
- php: ^8.0
- illuminate/contracts: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
- illuminate/validation: ^9.0|^10.0|^11.0
- illuminate/view: ^9.0|^10.0|^11.0
- vlucas/phpdotenv: ^5.4.1
Requires (Dev)
- orchestra/testbench: ^7.4|^8.0|^9.0
- phpunit/phpunit: ^9.5|^10.0|^11.0
- vimeo/psalm: ^4.23|^5.1
This package is auto-updated.
Last update: 2024-08-23 15:15:08 UTC
README
本包旨在为Laravel项目提供简单而强大的货币值格式化和转换工具。
为什么不使用moneyphp
包呢?
因为它使用了intl
扩展进行数字格式化。intl
扩展在PHP安装中默认不存在,可能会在不同服务器上产生不同的结果。
入门
1. 安装
运行以下命令
composer require akaunting/laravel-money
2. 发布
发布配置文件。
php artisan vendor:publish --tag=money
3. 配置
您可以从config/money.php
文件更改应用程序的货币信息
使用方法
use Akaunting\Money\Currency; use Akaunting\Money\Money; echo Money::USD(500); // '$5.00' unconverted echo new Money(500, new Currency('USD')); // '$5.00' unconverted echo Money::USD(500, true); // '$500.00' converted echo new Money(500, new Currency('USD'), true); // '$500.00' converted
高级
$m1 = Money::USD(500); $m2 = Money::EUR(500); $m1->getCurrency(); $m1->isSameCurrency($m2); $m1->compare($m2); $m1->equals($m2); $m1->greaterThan($m2); $m1->greaterThanOrEqual($m2); $m1->lessThan($m2); $m1->lessThanOrEqual($m2); $m1->convert(Currency::GBP(), 3.5); $m1->add($m2); $m1->subtract($m2); $m1->multiply(2); $m1->divide(2); $m1->allocate([1, 1, 1]); $m1->isZero(); $m1->isPositive(); $m1->isNegative(); $m1->format();
辅助函数
money(500) money(500, 'USD') currency('USD')
Blade指令
@money(500) @money(500, 'USD') @currency('USD')
Blade组件
与指令相同,还有一个blade
组件,您可以在视图中创建货币和货币单位
<x-money amount="500" /> or <x-money amount="500" currency="USD" /> or <x-money amount="500" currency="USD" convert /> <x-currency currency="USD" />
宏
此包实现了Laravel的Macroable
特质,允许在Money
和Currency
上使用宏和混入。
示例用例
use Akaunting\Money\Currency; use Akaunting\Money\Money; Money::macro( 'absolute', fn () => $this->isPositive() ? $this : $this->multiply(-1) ); $money = Money::USD(1000)->multiply(-1); $absolute = $money->absolute();
宏也可以静态调用
use Akaunting\Money\Currency; use Akaunting\Money\Money; Money::macro('zero', fn (?string $currency = null) => new Money(0, new Currency($currency ?? 'GBP'))); $money = Money::zero();
混入
除了宏之外,还支持混入。这允许将另一个类的方法定义到Money或Currency类中。
定义混入类
use Akaunting\Money\Money; class CustomMoney { public function absolute(): Money { return $this->isPositive() ? $this : $this->multiply(-1); } public static function zero(?string $currency = null): Money { return new Money(0, new Currency($currency ?? 'GBP')); } }
通过传递类实例来注册混入
Money::mixin(new CustomMoney);
自定义类的方法将可用
$money = Money::USD(1000)->multiply(-1); $absolute = $money->absolute(); // Static methods via mixins are supported too: $money = Money::zero();
变更日志
有关最近更改的更多信息,请参阅发布。
贡献
欢迎提交拉取请求。您必须遵循PSR编码标准。
安全
请审查我们的安全策略,了解如何报告安全漏洞。
鸣谢
许可
MIT许可(MIT)。请参阅LICENSE获取更多信息。