krak/money

本包最新版本(v0.2.2)没有可用的许可信息。

简单的货币操作库

v0.2.2 2017-06-26 09:15 UTC

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