sebastian/money
Sebastian/money is an abandoned PHP value object library for monetary values using a currency's smallest unit, with formatting and currency subclasses. It was intended as a PHPUnit example, not for production; use moneyphp/money instead.
Money value object, or (c) adopting a maintained library like moneyphp/money or brick/money. It crystallizes the decision: value objects are a solved problem; we should not build.getAmount() (minor units) and getConvertedAmount() (base units), it is a concrete conversation piece for roadmap items like multi-currency pricing, currency-specific rounding rules, and display formatting.NOASSERTION licensing, and an archived repo whose README states the author abandoned it, this is a clean example for justifying a standing "no unmaintained dependencies" policy and for auditing legacy code that may already require it.Consider it only in these narrow cases:
sebastian/money; then it is a known liability to scope for replacement rather than a candidate for new work.moneyphp/money and brick/money.Look elsewhere — decisively — when:
NOASSERTION license designation means legal review is required before any use; the effort is not worth it for a replaceable library.moneyphp/money covers this surface and is actively maintained; brick/money is a strong alternative with arbitrary-precision decimal support.Money for Java/JSR-354, dinero.js, py-moneyed, Shopify's money for Ruby) — do not port this package.Bottom line: do not adopt this package. Adopt its idea, and use a maintained library instead.
For executives: sebastian/money is a well-known but formally abandoned PHP library — the author's own README tells users to use moneyphp/money instead. Its 726 stars reflect historical influence, not current fitness; the last release was 2013, it carries an unclear (NOASSERTION) license, and it has no listed dependents. Building on it would create a maintenance, security-patching, and legal-review burden in exchange for code we can get from an actively maintained project. Recommended decision: standardize on moneyphp/money (or brick/money if we need arbitrary-precision or multi-currency allocation), and treat sebastian/money as a design reference only.
For engineering: the value is the pattern, not the code. Represent money as an immutable value object holding an integer amount in the currency's smallest unit plus a currency code — never a float, never a bare scalar. Centralize rounding, formatting, and arithmetic in that object so pricing and billing code cannot drift. Use moneyphp/money as the implementation; add a lint or code-review rule banning floats for monetary fields. If we have legacy dependencies on sebastian/money, inventory them now and schedule migration — the surface area is small and the swap is mechanical, so it is cheap insurance rather than a project.
For product: this supports the pricing, billing, and multi-currency roadmap by giving us a concrete, agreed representation of money before those features are specified. It is a low-cost, high-leverage standards decision — one sprint of alignment now avoids a class of rounding and reconciliation bugs later.
How can I help you explore Laravel packages today?