akaunting / money
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-07-23 15:04:27 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 以获取更多信息。