macmotp / money
轻量级PHP库,用于处理货币
v0.4.1
2024-09-20 03:58 UTC
Requires
- php: >=8.2
- illuminate/collections: >=10.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.21
- phpunit/phpunit: ^10.2
This package is auto-updated.
Last update: 2024-09-20 04:02:03 UTC
README
用于在PHP中处理货币的库,简单且轻量
适用于任何电子商务、金融科技或需要💰的应用。
需求
- PHP >= 8.2
安装
使用composer安装此包
composer require macmotp/money
用法
创建货币对象
use Macmotp\Money; use Macmotp\Currency; // Amounts are always in cents (or lowest minor unit)! $amount = 100; // All Currencies adopt ISO 4217 standard $currency = Currency::USD; // Create the object $money = new Money($amount, $currency); // or Money::make($amount, $currency) echo $money->print(); // (string) '1.00$' // Another example with Vietnamese Dong $money = new Money(10000, Currency::VND); echo $money->print(); // (string) '10 000₫'
基本方法列表
getAmount()
:返回以分表示的金额;getAmountForHumans()
:返回以小数表示的金额;getCurrencyCode()
:返回货币代码;getCurrencySymbol()
:返回货币符号;getCurrency()
:返回货币对象(作为Currency实现,而不是作为字符串);clone()
:克隆整个对象;zero()
:将金额设置为零;
如果您想打印任何货币属性,请查看格式类。 例如:如果您想获取货币代码,可以运行 $money->getCurrencyCode()
打印货币(在屏幕上,而不是实际打印)
use Macmotp\Money; use Macmotp\Currency; $money = new Money(12345, Currency::USD); // Default format based on each currency echo $money->print(); // (string) '123.45$' // Override the default echo $money->withCode() ->withSpace() ->withoutDecimals() ->print(); // (string) '123 USD'
打印方法列表
toArray()
:将对象转换为数组;withSymbol()
:打印符号而不是货币代码;withoutSymbol()
:不打印符号和货币代码;withCode()
:打印货币代码而不是代码;withoutCode()
:不打印符号和货币代码;withSymbolOnLeft()
:在左侧打印符号;withSymbolOnRight()
:在右侧打印符号;withCodeOnLeft()
:在左侧打印货币代码;withCodeOnRight()
:在右侧打印货币代码;withSpace()
:在金额和货币之间打印一个空格;withoutSpace()
:不打印金额和货币之间的空格;withoutDecimals()
:不打印金额的小数部分;withDecimalSeparator(string $decimalSeparator)
:覆盖默认的十进制分隔符字符;withThousandsSeparator(string $thousandsSeparator)
:覆盖默认的千位分隔符字符;withNumberOfDecimals(int $numberOfDecimals)
:设置小数的精度;
使用货币进行计算
use Macmotp\Money; use Macmotp\Currency; $moneyOne = new Money(200, Currency::USD); $moneyTwo = new Money(300, Currency::USD); echo $moneyOne->add($moneyTwo); // new Money(500, Currency::USD)
计算方法列表
add(Money $money)
;subtract(Money $money)
;multiply(float $factor, string $flat = '')
;divide(float $factor, string $flat = '')
;inPercentage(float $percentage, string $flat = '')
;absolute()
;
聚合货币
use Macmotp\Money; use Macmotp\Currency; $moneyOne = new Money(200, Currency::USD); $moneyTwo = new Money(300, Currency::USD); $moneyThree = new Money(400, Currency::USD); echo Money::max($moneyOne, $moneyTwo, $moneyThree); // new Money(400, Currency::USD) echo Money::avg($moneyOne, $moneyTwo, $moneyThree); // new Money(300, Currency::USD)
聚合方法列表
min(Money ...$money)
:返回最小金额;max(Money ...$money)
:返回最大金额;avg(Money ...$money)
:返回平均值;sum(Money ...$money)
:返回所有金额的总和;
比较货币
use Macmotp\Money; use Macmotp\Currency; $moneyOne = new Money(200, Currency::USD); $moneyTwo = new Money(300, Currency::USD); echo $moneyOne->isLessThan($moneyTwo); // (bool) true
比较方法列表
isSameCurrency(Money ...$money)
;isEqualTo(Money $money)
;isGreaterThan(Money $money)
;isGreaterThanOrEqualTo(Money $money)
;isLessThan(Money $money)
;isLessThanOrEqualTo(Money $money)
;isPositive()
;isNegative()
;isZero()
;isZeroOrPositive()
;isZeroOrNegative()
;
包中的货币列表
use Macmotp\Money; $list = Money::getAllCurrencies(); // This will return a Illuminate\Support\Collection
这些都是已实现货币
AED
:阿联酋迪拉姆AFN
:阿富汗尼ALL
:阿尔巴尼亚列克AMD
:亚美尼亚德拉姆ANG
:荷属安的列斯盾AOA
:安哥拉宽扎ARS
:阿根廷比索AUD
:澳大利亚元AWG
: 阿鲁巴弗罗林AZN
: 阿塞拜疆马纳特BAM
: 波斯尼亚和黑塞哥维那可兑换马克BBD
: 巴巴多斯元BDT
: 孟加拉塔卡BGN
: 保加利亚列弗BHD
: 巴林第纳尔BIF
: 布隆迪法郎BMD
: 百慕大元BND
: 文莱元BOB
: 玻利维亚诺BRL
: 巴西雷亚尔BSD
: 巴哈马元BTC
: 比特币BTN
: 不丹努尔特鲁姆BWP
: 博茨瓦纳普拉BYN
: 白俄罗斯卢布BZD
: 伯利兹元CAD
: 加拿大元CDF
: 刚果法郎CHF
: 瑞士法郎CLP
: 智利比索CNY
: 中国元 - 人民币COP
: 哥伦比亚比索CRC
: 哥斯达黎加科朗CUP
: 古巴比索CVE
: 佛得角埃斯库多CZK
: 捷克克朗DJF
: 吉布提法郎DKK
: 丹麦克朗DOP
: 多米尼加比索DZD
: 阿尔及利亚第纳尔EGP
: 埃及镑ERN
: 厄立特里亚纳克法ETB
: 埃塞俄比亚比尔EUR
: 欧元FJD
: 斐济元FKP
: 福克兰群岛镑GBP
: 英镑GEL
: 格鲁吉亚拉里GHS
: 加纳塞地GIP
: 直布罗陀镑GMD
: 冈比亚达拉西GNF
: 几内亚法郎GTQ
: 危地马拉格查尔GYD
: 圭亚那元HKD
: 香港元HNL
: 洪都拉斯伦皮拉HTG
: 海地古德HUF
: 匈牙利福林IDR
: 印尼盾ILS
: 以色列新谢克尔INR
: 印度卢比IQD
: 伊拉克第纳尔IRR
: 伊朗里亚尔ISK
: 冰岛克朗JMD
: 牙买加元JOD
: 约旦第纳尔JPY
: 日元KES
: 肯尼亚先令KGS
: 吉尔吉斯斯坦索姆KHR
: 柬埔寨瑞尔KMF
: 科摩罗法郎KPW
: 朝鲜元KRW
: 韩元KWD
: 科威特第纳尔KYD
: 开曼群岛元KZT
: 哈萨克斯坦坚戈LAK
: 老挝基普LBP
: 黎巴嫩镑LKR
: 斯里兰卡卢比LRD
: 利比里亚元LSL
: 莱索托洛蒂LYD
: 利比亚第纳尔MAD
: 摩洛哥迪拉姆MDL
: 摩尔多瓦列伊MGA
: 马达加斯加阿里亚里MKD
: 马其顿第纳尔MMK
: 缅甸元MNT
: 蒙古图格里克MOP
: 澳门元MRU
: 毛里塔尼亚乌吉亚MUR
: 毛里求斯卢比MVR
: 马尔代夫拉菲亚MWK
: 马拉维克瓦查MXN
: 墨西哥比索MYR
: 马来西亚林吉特MZN
: 莫桑比克梅蒂卡尔NAD
: 纳米比亚元NGN
: 尼日利亚奈拉NIO
: 尼加拉瓜科多巴NOK
: 挪威克朗NPR
: 尼泊尔卢比NZD
: 新西兰元OMR
: 阿曼里亚尔PAB
: 巴拿马巴波亚PEN
: 秘鲁索尔PGK
: 巴布亚新几内亚基那PHP
: 菲律宾比索PKR
: 巴基斯坦卢比PLN
: 波兰兹罗提PYG
: 巴拉圭瓜拉尼QAR
: 卡塔尔里亚尔RON
: 罗马尼亚列伊RSD
: 塞尔维亚第纳尔RUB
: 俄罗斯卢布RWF
: 卢旺达法郎SAR
: 沙特里亚尔SBD
: 所罗门群岛元SCR
: 塞舌尔卢比SDG
: 苏丹镑SEK
: 瑞典克朗SGD
: 新加坡元SHP
: 圣赫勒拿镑SLE
: 塞拉利昂利昂SOS
: 索马里先令SRD
: 苏里南元SSP
: 南苏丹镑STN
: 圣多美和普林西比多布拉SYP
: 叙利亚镑SZL
: 斯威士兰里兰吉尼THB
: 泰铢TJS
: 塔吉克斯坦索莫尼TMT
: 土库曼斯坦马纳特TND
: 突尼斯第纳尔TOP
: 汤加潘加TRY
: 土耳其里拉TTD
: 特立尼达和多巴哥元TWD
: 新台币TZS
: 坦桑尼亚先令UAH
: 乌克兰格里夫纳UGX
: 乌干达先令USD
: 美元UYU
: 乌拉圭比索UZS
: 乌兹别克斯坦苏姆VES
: 委内瑞拉主权玻利瓦尔VND
: 越南盾VUV
: 瓦努阿图瓦图WST
: 萨摩亚塔拉XAF
: 中非金融合作法郎XCD
: 东加勒比元XOF
: 西非金融合作法郎XPF
: 太平洋法郎YER
: 也门里亚尔ZAR
: 南非兰特ZMW
: 赞比亚克瓦查ZWG
: 津巴布韦金元
如果您想添加另一种货币,请提交一个issue。
测试
composer test
变更日志
请参阅变更日志,了解最近的变化。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请查看我们的安全政策,了解如何报告安全漏洞。
鸣谢
许可
MIT许可(MIT)。请参阅许可文件获取更多信息。