moneyphp/money

PHPmoneyphp.org

PHP implementation of Fowler's Money pattern.

phpmoneyfowler-money-patterncurrencycurrency-exchange-ratescurrency-converter
スター成長
スター
4.9k
フォーク
443
週間成長
+-1
Issue
1
2k4k
2011年4月2016年5月2021年7月2026年9月
成果物Packagist
README

Money

Latest Version GitHub Workflow Status Total Downloads

Email

Money PHP

PHP library to make working with money safer, easier, and fun!

"If I had a dime for every time I've seen someone use FLOAT to store currency, I'd have $999.997634" -- Bill Karwin

In short: You shouldn't represent monetary values by a float Wherever you need to represent money, use this Money value object. Since version 3.0 this library uses strings internally in order to support unlimited integers.

<?php

use Money\Money;

$fiveEur = Money::EUR(500);
$tenEur = $fiveEur->add($fiveEur);

list($part1, $part2, $part3) = $tenEur->allocate([1, 1, 1]);
assert($part1->equals(Money::EUR(334)));
assert($part2->equals(Money::EUR(333)));
assert($part3->equals(Money::EUR(333)));

The documentation is available at http://moneyphp.org

Requirements

This library requires the BCMath PHP extension. There might be additional dependencies for specific feature, e.g. the Swap exchange implementation, check the documentation for more information.

Version 4 requires PHP 8.0. For older version of PHP, use version 3 of this library. From version 4.5 this package will only support PHP versions that actually receive updates by PHP itself. If you want to use the package with older PHP versions, you can of course use older versions of this package.

Install

Via Composer

$ composer require moneyphp/money

Features

  • JSON Serialization
  • Big integer support utilizing different, transparent calculation logic upon availability (bcmath, gmp, plain php)
  • Money formatting (including intl formatter)
  • Currency repositories (ISO currencies included)
  • Money exchange (including Swap implementation)

Documentation

Please see the official documentation.

Testing

We try to follow TDD by using phpunit to test this library.

$ composer test

Running the tests in Docker

Money requires a set of dependencies, so you might want to run it in Docker.

First, build the image locally:

$ docker build -t moneyphp .

Then run the tests:

$ docker run --rm -it -v $PWD:/app -w /app moneyphp vendor/bin/phpunit --exclude-group segmentation

Contributing

We would love to see you helping us to make this library better and better. Please keep in mind we do not use suffixes and prefixes in class names, so not CurrenciesInterface, but Currencies. Other than that, Style CI will help you using the same code style as we are using. Please provide tests when creating a PR and clear descriptions of bugs when filing issues.

Security

If you discover any security related issues, please contact us at team@moneyphp.org.

License

The MIT License (MIT). Please see License File for more information.

Acknowledgements

This library is heavily inspired by Martin Fowler's Money pattern. A special remark goes to Mathias Verraes, without his contributions, in code and via his blog, this library would not be where it stands now.

関連リポジトリ
laravel/laravel

Laravel is a web application framework with expressive, elegant syntax. We’ve already laid the foundation for your next big idea — freeing you to create without sweating the small things.

Bladelibraryphpframework
laravel.com
84.9k24.9k
coollabsio/coolify

An open-source, self-hostable PaaS alternative to Vercel, Heroku & Netlify that lets you easily deploy static sites, databases, full-stack applications and 280+ one-click services on your own servers.

PHPPackagistApache License 2.0nodejsmysql
coolify.io
61.5k5.4k
LeCoupa/awesome-cheatsheets

👩‍💻👨‍💻 Awesome cheatsheets for popular programming languages, frameworks and development tools. They include everything you should know in one single file.

JavaScriptnpmawesomeMIT Licensecheatsheetsjavascript
lecoupa.github.io/awesome-cheatsheets/
46.4k6.7k
nextcloud/server

☁️ Nextcloud server, a safe home for all your data

PHPPackagistGNU Affero General Public License v3.0open-sourcefile-sharing
nextcloud.com
36.7k5.2k
laravel/framework

Laravel is a web application framework with expressive, elegant syntax.

PHPPackagistlibraryMIT Licensephpframework
laravel.com
34.9k12k
ziadoz/awesome-php

A curated list of amazingly awesome PHP libraries, resources and shiny things.

awesomeDo What The F*ck You Want To Public Licensephpphp-framework
32.7k5.1k
symfony/symfony

The Symfony PHP framework

PHPPackagistlibraryMIT Licenseframeworkphp
symfony.com
31.1k9.9k
composer/composer

Dependency Manager for PHP

PHPPackagistMIT Licensephpcomposer
getcomposer.org
29.5k4.8k
bagisto/bagisto

Open Source eCommerce & Multi-Vendor Marketplace Platform Built with Laravel for Enterprise-Scale Commerce, Supporting 10M+ SKUs

PHPPackagistappMIT Licenseecommerce-frameworklaravel
bagisto.com
28.1k3.3k
monicahq/monica

Personal CRM. Remember everything about your friends, family and business relationships.

PHPPackagistappGNU Affero General Public License v3.0laravelcrm
beta.monicahq.com
25.2k2.6k
firefly-iii/firefly-iii

Firefly III: a personal finances manager

PHPPackagistappGNU Affero General Public License v3.0phpmoney
firefly-iii.org
24.5k2.3k
krayin/laravel-crm

Krayin CRM is Free & Open Source CRM Built with Laravel for Customer, Lead, and Sales Management.

PHPPackagistMIT Licensephplaravel
krayincrm.com
23.8k1.6k