philipbrown / money
Requires
- php: >=5.3.2
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2022-02-01 12:29:29 UTC
README
无耻地移植 RubyMoney
Money
是一个 PHP 类,允许你在应用程序中轻松处理货币,包括其值和货币。每个货币都有其相关的信息,通过单独的 Currency
类封装。
值以分的形式表示为整数,以避免浮点数舍入误差。
返回值是不可变值对象。
安装
将 philipbrown/money
添加到 composer.json
中作为依赖项。
{ "require": { "philipbrown/money": "1.*" } }
使用 composer update
更新你的包。
使用
要创建一个新的 Money
对象,你可以像通常一样实例化,或者使用 init
静态便捷方法。
// Create a new Money object representing $5 USD $m = Money::init(500, 'USD'); $m = new Money(500, 'USD');
值存储为整数,以避免浮点数错误的问题。要访问 Money
对象的值,可以简单地请求 cents
属性。要获取对象的货币,可以请求 currency
属性。这将返回一个具有 __toString
方法的 Money\Curreny
实例。
$m->cents; // 500 $m->currency; // United States Dollar
对于处理许多不同类型的货币,相等性非常重要。你不应该能够盲目地添加两种不同的货币,而不进行某种交换过程。
$m = Money::init(500, 'USD'); $m->isSameCurrency(Money::init(500, 'GBP')); // false
值对象 是一个对象,它表示一个实体,其实际并不基于身份:即两个值对象相等,当且仅当它们具有相同的值,而不一定是相同的对象。
$one = Money::init(500, 'USD'); $two = Money::init(500, 'USD'); $three = Money::init(501, 'USD'); $one->equals($two); // true $one->equals($three); // false
不可避免地,你需要在应用程序中添加、减去、乘以和除以货币值。
$one = Money::init(500, 'USD'); $two = Money::init(500, 'USD'); $three = $one->add($two); $three->cents // 1000
同样,你不应该能够在没有某种交换过程的情况下向不同货币的值添加。
$one = Money::init(500, 'USD'); $two = Money::init(500, 'GBP'); $three = $one->add($two); // Money\Exception\InvalidCurrencyException
许可证
MIT 许可证 (MIT)
版权所有 (c) 2014 Philip Brown
特此授予任何获得此软件及其相关文档文件(“软件”)副本的人免费使用该软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,以及准许向软件提供方提供软件的人行使其上述权利,前提是必须遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者都不应对任何索赔、损害或其他责任负责,无论这些索赔、损害或其他责任是由合同、侵权或其他原因引起的,与软件或其使用或其他交易有关。