mathiasverraes / money
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-bcmath: *
- ext-filter: *
- ext-json: *
Requires (Dev)
- ext-gmp: *
- ext-intl: *
- cache/taggable-cache: ^1.1.0
- doctrine/coding-standard: ^12.0
- doctrine/instantiator: ^1.5.0 || ^2.0
- florianv/exchanger: ^2.8.1
- florianv/swap: ^4.3.0
- moneyphp/crypto-currencies: ^1.1.0
- moneyphp/iso-currencies: ^3.4
- php-http/message: ^1.16.0
- php-http/mock-client: ^1.6.0
- phpbench/phpbench: ^1.2.5
- phpunit/phpunit: ^10.5.9
- psalm/plugin-phpunit: ^0.18.4
- psr/cache: ^1.0.1 || ^2.0 || ^3.0
- vimeo/psalm: ~5.20.0
Suggests
- ext-gmp: Calculate without integer limits
- ext-intl: Format Money objects with intl
- florianv/exchanger: Exchange rates library for PHP
- florianv/swap: Exchange rates library for PHP
- psr/cache-implementation: Used for Currency caching
- v4.5.0
- v4.4.0
- v4.3.0
- v4.2.0
- v4.1.1
- v4.1.0
- v4.0.5
- v4.0.4
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v4.0.0-beta1
- 3.x-dev
- dev-master / 3.x-dev
- v3.3.3
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.1
- v3.2.0
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.9
- v3.0.8
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v3.0.0-beta4
- v3.0.0-beta.3
- v3.0.0-beta.2
- v3.0.0-beta
- v3.0.0-alpha
- 1.x-dev
- v1.3.0
- 1.2.1
- 1.2.0
- 1.1.0
- dev-precise-money
This package is auto-updated.
Last update: 2024-08-12 18:37:19 UTC
README
PHP库,使金钱操作更安全、更简单、更有趣!
"如果每当我看到有人使用FLOAT来存储货币,我就有一分钱,我会拥有999.997634美元" -- Bill Karwin
简而言之:你不应该用浮点数来表示货币值。无论何时需要表示金钱,请使用这个Money值对象。自3.0版本起,此库内部使用字符串以支持无限整数。
<?php use Money\Money; $fiveEur = Money::EUR(500); $tenEur = $fiveEur->add($fiveEur); list($part1, $part2, $part3) = $tenEur->allocate([1, 1, 1]); assert($part1->equals(Money::EUR(334))); assert($part2->equals(Money::EUR(333))); assert($part3->equals(Money::EUR(333)));
文档可在 http://moneyphp.org 查找
需求
此库需要 BCMath PHP 扩展。可能还有其他特定功能的依赖项,例如Swap交易实现,请查阅文档以获取更多信息。
版本4需要PHP 8.0。对于旧版本的PHP,请使用此库的版本3。从版本4.5开始,此包将仅支持PHP自身实际更新的PHP版本。如果您想使用旧版本的PHP版本,当然可以使用此包的旧版本。
安装
通过Composer
$ composer require moneyphp/money
功能
- JSON序列化
- 大整数支持,利用不同的透明计算逻辑(bcmath、gmp、普通PHP)
- 金钱格式化(包括intl格式化器)
- 货币存储库(包括ISO货币)
- 金钱兑换(包括Swap实现)
文档
请参阅 官方文档。
测试
我们尝试通过使用 phpunit 来遵循TDD测试此库。
$ composer test
在Docker中运行测试
Money需要一系列依赖项,因此您可能希望在Docker中运行它。
首先,在本地构建镜像
$ docker build -t moneyphp .
然后运行测试
$ docker run --rm -it -v $PWD:/app -w /app moneyphp vendor/bin/phpunit --exclude-group segmentation
贡献
我们非常希望看到您帮助我们使这个库变得更好。请注意,我们不在类名中使用后缀和前缀,因此不是 CurrenciesInterface
,而是 Currencies
。除此之外,Style CI将帮助您使用与我们相同的代码风格。在创建PR时请提供测试,在提交问题时请提供清晰的错误描述。
安全
如果您发现任何安全相关的问题,请通过 team@moneyphp.org 联系我们。
许可证
MIT许可证(MIT)。有关更多信息,请参阅 许可证文件。
致谢
这个库深受 马丁·福勒的Money模式 启发。特别感谢 马蒂亚斯·维尔莱斯,没有他的贡献,无论是代码上还是在他的 博客 上,这个库就不会达到现在的水平。