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)。请参阅许可文件获取更多信息。