padam87 / money-bundle
Symfony 扩展包,用于 https://github.com/moneyphp/money
v0.5.1
2022-03-10 21:11 UTC
Requires
- php: ^7.4 || ^8.0
- ext-bcmath: *
- doctrine/doctrine-bundle: ^1.5 || ^2.0
- doctrine/orm: ^2.5
- moneyphp/money: ^3.1
- symfony/framework-bundle: ^4.0 || ^5.0 || ^6.0
Requires (Dev)
- phpunit/phpunit: ^7.2
README
Symfony 扩展包,用于 https://github.com/moneyphp/money
作为一个有 观点 的扩展包,此货币扩展包采用以下原则作为其主要指导
- 存储与计算同样重要。
- 财务数据应存储在 SQL 中,因此仅实现 Doctrine ORM。
- 货币对象是嵌入式对象。
- 金额应在数据库中以人类可读的方式存储。
- ISO 货币刻度(例如,EUR 的最小金额为 1 美分)对于复杂应用不可行。
为了实现这些,以下限制适用
- 精度和刻度是强制性的(但具有默认值)
- 金额映射为 DECIMAL(可更改,但不建议更改)
- ext-bcmath 是强制性的。(DECIMAL 数据库值通过 PDO 转换为字符串。此扩展包使用 bcmath 将这些值乘以 ˙pow(10, $scale)˙,并将整数值传递给
Money
对象。https://github.com/Padam87/MoneyBundle/blob/master/Doctrine/Type/MoneyAmountType.php#L45)
安装
composer require padam87/money-bundle
配置(可选)
padam87_money: precision: 18 scale: 2 currencies: # Default: - EUR
用法
Doctrine
/** * @var Money * * @ORM\Embedded(class="Money\Money") */ private $price;
格式化
此扩展包添加了 2 个服务。
padam87_money.number_formatter
- 一个简单的 \NumberFormatter
对象,具有当前请求的本地化和货币样式。
Money\Formatter\IntlMoneyFormatter
- Intl 货币格式化器