moneyphp / money
PHP implementation of Fowler's Money pattern.
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing moneyphp/money in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler viewMoney 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. 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 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. 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: Then run the tests: 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 , but . 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.