krak / money
本包最新版本(v0.2.2)没有可用的许可信息。
简单的货币操作库
v0.2.2
2017-06-26 09:15 UTC
Requires
- php: >=5.6
Requires (Dev)
- peridot-php/peridot: ^1.18
This package is auto-updated.
Last update: 2024-09-18 17:07:17 UTC
README
使用 bcmath 正确操作货币值的简单货币操作库。
安装
使用 composer 在 krak/money
下安装
使用方法
<?php use Krak\Money; $calc = Money\calc($precision = 2); $res = $calc->add('1.00', '2.00'); $res = $calc->mul($res, 2);
API
calc($precision = 2)
返回一个 BCMathCalculator 的缓存实例。如果需要执行可能需要额外精度的乘法或除法操作,请将精度设置得更高。
preciseCalc()
返回一个 FloatCalculator 的缓存实例。如果需要进行密集的货币计算,如计算复利(需要大量精度),请使用此计算器。完成后,应使用 money\f
格式化结果货币。
f($money)
将货币四舍五入到两位小数,并返回一个格式正确的货币字符串 \d+\.\d{2}
。
接口 Calculator
<?php interface Calculator { public function add($a, $b); public function sub($a, $b); public function mul($a, $b); public function div($a, $b); public function cmp($a, $b); }
这些方法相对简单易懂,cmp
方法将在 $a
和 $b
相等时返回 0,在 $a
大于 $b
时返回 > 0,其他情况返回 < 0。
抽象类 AbstractCalculator
<?php abstract class AbstractCalculator implements Calculator { public function sum(...$args); public function diff(...$args); public function quot(...$args); public function prod(...$args); /** returns the max value of the set */ public function max(...$args); /** returns the min value of the set */ public function min(...$args); /** returns true if $a < $b */ public function lt($a, $b); /** returns true if $a <= $b */ public function lte($a, $b); /** returns true if $a > $b */ public function gt($a, $b); /** returns true if $a >= $b */ public function gte($a, $b); /** returns true if $a == $b */ public function eq($a, $b); /** returns true if $a != $b */ public function neq($a, $b); abstract public function add($a, $b); abstract public function sub($a, $b); abstract public function mul($a, $b); abstract public function div($a, $b); abstract public function cmp($a, $b); }
任何计算器都应该扩展这个类而不是直接实现 Calculator 接口,以便它可以有这些额外的方法。
每个方法都会找到参数集的和、差、商、积、最大值或最小值。它们将实际计算委托给抽象函数。
测试
make test