rogervila / moneyphp-operations
MoneyPHP帮助库,用于处理货币
1.5.0
2023-12-02 11:50 UTC
Requires
- moneyphp/money: ^4.1
Requires (Dev)
- ext-intl: *
- phpstan/phpstan: ^1.9.14
- phpunit/phpunit: ^9.5.28
- vimeo/psalm: ^5.6
README
MoneyPHP Operations
关于
MoneyPHP Operations提供了一套帮助库,用于使用MoneyPHP处理货币。
安装
composer require rogervila/moneyphp-operations
使用
注意:欢迎提交包含新帮助库的拉取请求!
百分比增加
use Money\Money; use MoneyOperation\Operation; $money = Money::EUR('100'); // 1€ $increasedMoney = Operation::of($money)->percentageIncrease('20') // 1.20€
百分比减少
use Money\Money; use MoneyOperation\Operation; $money = Money::EUR('288'); // 2.88€ // percentageDecrease accepts positive and negative numeric strings $decreasedMoney = Operation::of($money)->percentageDecrease('2.99') // 2.79€ $decreasedMoney = Operation::of($money)->percentageDecrease('-2.99') // 2.79€
百分比差异
use Money\Money; use MoneyOperation\Operation; $moneyA = Money::EUR('100'); // 1€ $moneyB = Money::EUR('120'); // 1.20€ // Returns a float. Use number_format to format the result $percentage = Operation::of($moneyA)->percentageDifference($moneyB) // 20.0
拆分
use Money\Money; use MoneyOperation\Operation; $money = Money::EUR('1000'); // 10€ /** * Will try to increase the first part when cannot be split equally * Throws \MoneyOperation\Exceptions\InvalidOperationException when cannot be split at all (for very low values mainly) */ $parts = Operation::of($money)->split(3) // [Money::EUR('334'), Money::EUR('333'), Money::EUR('333')]
连接
use Money\Money; use MoneyOperation\Operation; $parts = [Money::EUR('334'), Money::EUR('333'), Money::EUR('333')]; $money = Operation::join($parts) // 10€
平均值
use Money\Money; use MoneyOperation\Operation; $parts = [Money::EUR('100'), Money::EUR('200'), Money::EUR('300'), Money::EUR('400')]; $money = Operation::average($parts) // 2,50€
格式化
use Money\Money; use MoneyOperation\Operation; /** * Uses \Money\Formatter\IntlMoneyFormatter * Throws \MoneyOperation\Exceptions\InvalidOperationException when intl extension is not available */ $money = Operation::of(Money::USD('100'))->format('en_US') // $1.00
解析
use Money\Money; use MoneyOperation\Operation; /** * Uses \Money\Parser\IntlMoneyParser * Throws \MoneyOperation\Exceptions\InvalidOperationException when intl extension is not available */ $money = Operation::parse('$1.00', 'en_US') // Money::USD('100')
转换为小数
use Money\Money; use MoneyOperation\Operation; /** * Uses \Money\Parser\DecimalMoneyFormatter */ $money = Operation::of(Money::EUR(54321))->toDecimal() // double(543.21)
工厂
use Money\Money; use MoneyOperation\Operation; /** * @param int|numeric-string $amount * @param Currency|non-empty-string $currency */ $money = Operation::factory(100, 'EUR') // Money::EUR('100')
作者
由Roger Vilà创建
许可证
MoneyPHP Operations是开源软件,采用MIT许可证。