hemeragestao / money
Mathias Verraes 实现的 Fowler 的 Money 模式的 PHP 实现
1.2.0
2013-04-12 23:10 UTC
Requires
- php: >=5.3.3
Requires (Dev)
- phpunit/phpunit: 3.7.*
Suggests
- pink-tie/money-bundle: For Symfony integration.
This package is not auto-updated.
Last update: 2024-09-28 15:28:55 UTC
README
从 Mathias Verraes 实现的 Fowley 的 money 模式 分支。
当前版本的分支通过在 Money 构造函数中使用浮点数作为参数与 Fowley 的模式分离。这是为了解决在 32 位平台上大型货币实体溢出 PHP int 大小的问题。这个问题将在本分支的后续版本中解决,因此请期待在次要版本上的 API 破坏。
PHP 5.3+ 库,使处理货币更安全、更简单、更有趣!
"如果我每次看到有人用 FLOAT 存储货币就有一分钱,我就会有 999.997634 美元" -- Bill Karwin
简而言之:你不应该用浮点数表示货币值。无论何时需要表示货币,都应使用此 Money 值对象。
<?php use Money\Money; $fiveEur = Money::EUR(5); $tenEur = $fiveEur->add($fiveEur); list($part1, $part2, $part3) = $tenEur->allocate(array(1, 1, 1)); assert($part1->equals(Money::EUR(334))); assert($part2->equals(Money::EUR(333))); assert($part3->equals(Money::EUR(333)));
文档可在 http://money.readthedocs.org 查阅
安装
使用 composer 安装库。将以下内容添加到您的 composer.json
{ "require": { "hemeragestao/money": "dev-master" }, "minimum-stability": "dev" }
现在运行 install
命令。
$ composer.phar install
新增功能
此分支用 Ruby 的 Money 映射中的数据替换了从 openexchangerates.org 的简单 ISO 4217 映射。这增加了一些附加功能,包括为 Money 对象生成格式化的输出字符串。此外,Money 对象构造函数接受一个浮点数参数,并将其用作金额而不是单位。这将在后续版本中更改。
<?php use Money\Money; echo Money::EUR(5.32)->formattedString();
输出
€ 5.32
集成
请参阅 MoneyBundle
或 TbbcMoneyBundle
以实现 Symfony 集成。