kazuto / laravel-money
Laravel的货币类型转换和外观
1.2.1
2022-02-12 16:41 UTC
Requires
- php: ^8.0
- ext-intl: *
- illuminate/contracts: ^8.0|^9.0
- spatie/laravel-package-tools: ^1.4.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.2
- kazuto/php-cs-preset: ^1.0
- nunomaduro/collision: ^5.3
- orchestra/testbench: ^6.15
- pestphp/pest: ^1.20
- pestphp/pest-plugin-laravel: ^1.1
- pestphp/pest-plugin-parallel: ^0.3.1
This package is auto-updated.
Last update: 2024-09-12 22:21:10 UTC
README
此包添加了货币类型转换和外观,通过将货币值作为整数列存储在数据库中,而不是使用浮点数、双精度浮点数或十进制数,从而消除了浮点数错误和计算错误的可能性。
安装
您可以通过composer安装此包
composer require kazuto/laravel-money
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --provider="Kazuto\LaravelMoney\MoneyServiceProvider"
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Kazuto\LaravelMoney\MoneyServiceProvider" --tag="money-config"
这是已发布配置文件的内容
return [ 'locale_iso' => 'en_US' ];
用法
// Base Money::fromInt(524)->toInt(); // 524 Money::fromInt(524)->toFloat(); // 5.24 Money::fromInt(524)->toText(); // $5.24 Money::fromInt(524)->toArray(); // [ // 'value' => 524, // 'formatted' => '$5.24', // 'currency' => 'USD', // 'symbol' => '$', // ] Money::fromFloat(5.24)->toInt(); // 524 Money::fromFloat(5.24)->toFloat(); // 5.24 Money::fromFloat(5.24)->toText(); // $5.24 Money::fromFloat(5.24)->toArray(); // [ // 'value' => 524, // 'formatted' => '$5.24', // 'currency' => 'USD', // 'symbol' => '$', // ] // Math // add(Money|int|float) Money::fromInt(524)->add(123); // 647 Money::fromInt(524)->add(1.23); // 647 Money::fromInt(524)->add(Money::fromFloat(1.23)); // 647 // substract(Money|int|float) Money::fromInt(524)->substract(123); // 401 Money::fromInt(524)->substract(1.23); // 401 Money::fromInt(524)->substract(Money::fromFloat(1.23)); // 401 // multiply(int|float) Money::fromInt(524)->multiply(2); // 1048 Money::fromInt(524)->multiply(1.23); // 645 (rounded from 644.52) // divide(int|float) Money::fromInt(524)->divide(2); // 262 Money::fromInt(524)->divide(1.23); // 426 (rounded from 426.01) // Comparisons // isEqualTo(Money|int|float) Money::fromInt(524)->isEqualTo(524); // true Money::fromInt(524)->isEqualTo(Money::fromFloat(5.24)); // true Money::fromInt(524)->isEqualTo(1.23); // false Money::fromInt(524)->isEqualTo(Money::fromInt(123)); // false // isGreaterThan(Money|int|float) Money::fromInt(524)->isGreaterThan(123); // true Money::fromInt(524)->isGreaterThan(Money::fromFloat(1.23)); // true Money::fromInt(524)->isGreaterThan(8.58); // false Money::fromInt(524)->isGreaterThan(Money::fromInt(858)); // false Money::fromInt(524)->isGreaterThan(524); // false Money::fromInt(524)->isGreaterThan(Money::fromFloat(5.24)); // false // isGreaterThanOrEqual(Money|int|float) Money::fromInt(524)->isGreaterThanOrEqual(8.58); // false Money::fromInt(524)->isGreaterThanOrEqual(524); // true Money::fromInt(524)->isGreaterThanOrEqual(Money::fromFloat(5.24)); // true // isLessThan(Money|int|float) Money::fromInt(524)->isLessThan(8.58); // true Money::fromInt(524)->isLessThan(Money::fromInt(858)); // true Money::fromInt(524)->isLessThan(123); // false Money::fromInt(524)->isLessThan(Money::fromFloat(1.23)); // false Money::fromInt(524)->isLessThan(524); // false Money::fromInt(524)->isLessThan(Money::fromFloat(5.24)); // false // isLessThanOrEqual(Money|int|float) Money::fromInt(524)->isLessThanOrEqual(2.24); // false Money::fromInt(524)->isLessThanOrEqual(524); // true Money::fromInt(524)->isLessThanOrEqual(Money::fromFloat(5.24)); // true
测试
# Unit Tests composer test:run # Coverage composer test:coverage
变更日志
请参阅变更日志以获取最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请查看我们的安全策略了解如何报告安全漏洞。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。