承接 phpexperts/money 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

phpexperts/money

Composer 安装命令:

composer require phpexperts/money

包简介

A PHP library for a precise money handling data type. Avoids floating point rounding errors.

README 文档

README

TravisCI Maintainability Test Coverage

MoneyType is a PHP Experts, Inc., Project meant to keep track of money precisely, even up to millions of dollars.

It is never safe to store money as floats or even integers times one hundred. This project gives you the security you need, so that something like the bug in "Office Space" just won't happen to your enterprise application.

Installation

Via Composer

composer require phpexperts/money

Usage

use PHPExperts\MoneyType\Money;

$money = new Money(5.22);

$money->add(0.55);
echo "$money\n"; // 5.77

# It keeps precision much much better than mere cents.
$money->subtract(0.0001);
echo "$money\n"; // 5.77
$money->subtract(0.004);
echo "$money\n"; // 5.77
$money->subtract(0.001);
echo "$money\n"; // 5.76

# Actually, to the tenth decimal place.
# So it's Cryptocurrency-ready!
$money->multiply(55.7773);
echo "$money\n"; // 321.55

# But deep down, it stores the true values to many decimals (if you use BCMath).
echo $money->getWithFullPrecision() . "\n"; // 321.5508738395

$money->divide('1.000005');
echo "$money\n"; // 321.55
echo $money->getWithFullPrecision() . "\n"; // 321.5492660931

# You can also compare really large numbers with one another, up to 10 decimal places.
# PHP Experts' MoneyType is cryptocurrency ready! In fact, that's what it was designed for!
$money->compare(321.5492660931);       // 0 = equal
$money->compare(321.549266093009);     // -1 = less
$money->compare(321.5492660931000001); // 1 = more

# Get the object.
print_r($money);

# It is cryptocurrency ready:
# Converts Bitcoins to Satoshis
$btc = '1.55527331';
$satoshis = NumberHelper::convertToCents($btc, 8); // 155527331 (int)

Use cases

PHPExperts\MoneyType\Money
✔ Can only be instantiated with a numeric string
✔ Will report what strategy is being used
✔ Will use BCMath if it is available
✔ Will fall back to native php if necessary
✔ Proxies everything to its calculation strategy
✔ Confirm that the readme demo works

PHPExperts\MoneyType\Internal\BCMathCalcStrategy
✔ Can get the full precision value to more than sixteen decimals
✔ Can add with high precision
✔ Can subtract with high precision
✔ Can multiply with high precision
✔ Can divide with high precision
✔ Can compare two numbers with high precision
✔ Can compute high precision modulus
✔ Can compute the modulus of decimals
✔ Can round with high precision
✔ Can only be instantiated with a numeric string
✔ Access the object as a string to get its valuation
✔ Can add with cent precision
✔ Can subtract with cent precision
✔ Can multiply with cent precision
✔ Can divide with cent precision
✔ Can compare two numbers with cent precision
✔ Will not accept a non number for any operation

PHPExperts\MoneyType\Internal\NativeCalcStrategy
✔ Wont attempt operations with non numbers
✔ Can get the full precision value to two decimals
✔ Cannot compute the modulus of decimals
✔ Will throw an exception if asked to compute an integer modulus
✔ Can compute the modulus of integers if dev passes i am a dummy parameter
✔ Can only be instantiated with a numeric string
✔ Access the object as a string to get its valuation
✔ Can add with cent precision
✔ Can subtract with cent precision
✔ Can multiply with cent precision
✔ Can divide with cent precision
✔ Can compare two numbers with cent precision
✔ Will not accept a non number for any operation

PHPExperts\MoneyType\Internal\NumberHelper: A collection of functions for number manipulation.
✔ Will return true if given a float
✔ Will return true if given a float string
✔ Will return false if given an integer
✔ Will return false if given an integer string
✔ Will throw an exception if given anything else
✔ Can convert dollars to cents integer without precision loss
✔ Can convert bitcoins to satoshis

Testing

phpunit

Contributors

Theodore R. Smith theodore@phpexperts.pro
GPG Fingerprint: 4BF8 2613 1C34 87AC D28F 2AD8 EB24 A91D D612 5690
CEO: PHP Experts, Inc.

[Alix Axel]
who contributed the base version of our "bcround()" function from https://stackoverflow.com/a/1653826/430062.

License

MIT license. Please see the license file for more information.

phpexperts/money 适用场景与选型建议

phpexperts/money 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 12 次下载、GitHub Stars 达 27, 最近一次更新时间为 2023 年 07 月 23 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「php」 「money」 「currency」 「precision」 「precise」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 phpexperts/money 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 phpexperts/money 我们能提供哪些服务?
定制开发 / 二次开发

基于 phpexperts/money 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 12
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 27
  • 点击次数: 15
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 27
  • Watchers: 4
  • Forks: 4
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-07-23