Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Money Bundle Laravel Package

moneyphp/money-bundle

Symfony bundle integrating the Money PHP library, providing service configuration, a Twig extension, form type, and validator for handling monetary values and currencies safely across your application.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Unchanged in shape: the package is a thin integration layer over moneyphp/money, contributing a bundle class, DI service definitions for formatters/parsers, a Twig extension, a form type, and a validator. v0.1.0 adds one more item to that list — a service definition of ISO currencies — which is a DI-provided currency registry rather than business logic. Fit is still determined by whether the host app is Symfony and whether money flows through DI, Twig, and forms. In a Symfony shop, high; in a Laravel or framework-agnostic app, the bundle's value still collapses to the underlying library plus a hand-rolled service provider.

Integration feasibility. Marginally better than before. A DI-available currency list removes one recurring piece of glue work (hand-maintaining an ISO 4217 array or wiring Money::getCurrencies() yourself), and gives form types and validators a single source of currency metadata. Everything else is unchanged: composer require, enable the bundle, configure default currency and decimal places, and autowiring picks up formatter/parser. The underlying library remains independently installable, so the adopt-value-objects-first path is still valid and still the durable decision.

Technical risk. Still moderate-to-high and still concentrated in lifecycle, but the profile has shifted rather than improved. Two signals now point in opposite directions:

  • Positive: a release exists, so the "frozen at 2020, silently abandoned" framing is no longer accurate. There is someone able to cut a tag.
  • Negative: the version is 0.1.0, labelled "first release." That either means a re-launch, a rename, a fork re-versioned under the same name, or a history reset — and none of those are confirmed. Pre-1.0 semver permits breaking changes in any minor bump, so the API cannot be treated as stable the way a 2020-era frozen tag effectively was.

The release notes say nothing about supported Symfony or PHP versions, so the primary technical risk — Composer constraint conflict on Symfony 6/7 and PHP 8.2/8.3 — is entirely unaddressed. Blast radius remains bounded: small surface, MIT licence, forkable, replaceable with a handful of service definitions. Formatting still depends on ext-intl and CLDR data, which drift with PHP releases, and now there is a second, independent data source (the bundled ISO currency list) that can drift on its own schedule.

Key questions.

  • Is v0.1.0 a re-launch, a fork, or a re-versioning of the same package? Which lineage are we tracking, and does it supersede the 2020 line?
  • Does the new composer.json declare Symfony 6/7 and PHP 8.2/8.3 support, or is the constraint set unchanged?
  • Is the ISO currency service a static curated list, or derived from moneyphp/money / ICU at build time? Who refreshes it when ISO 4217 changes?
  • Is 0.1.0 an intentional signal that the API is unstable, and what is the stated path to 1.0?
  • Do we consume the Twig extension, form type, and validator, or only the DI wiring — and does the new currency service change that answer?
  • Who owns the fork-or-replace decision if the next major Symfony upgrade lands before a compatible tag?
  • Are we standardizing on moneyphp/money as the value object regardless of the bundle decision? (Still the load-bearing question.)

Integration Approach

Stack fit. Unchanged: Symfony DI, Twig, Form, Validator, plus ext-intl. The currency service definition is a natural fit for Symfony apps that need picklists, validation of submitted currency codes, or a canonical list for admin configuration screens — it is the kind of thing teams otherwise duplicate in three places. For Laravel or API-only Symfony usage, the recommendation stands: take the library, skip the bundle, implement an equivalent service provider.

Migration path. Two-track, unchanged in principle, with one addition. Adopt moneyphp/money directly and model amounts as Money with explicit currencies — that remains the durable decision and is independent of the bundle. Layer the bundle on top only where Twig/form/validator surfaces are genuinely used. If the bundle installs at v0.1.0, prefer its currency service over any in-app ISO list so there is one owner of that data; if it does not install, replicate the service definitions in-app, which now includes sourcing currency metadata from moneyphp/money rather than a copy-pasted array.

Compatibility. Still the first thing to verify and still unverified by this release. Run composer why-not against the target Symfony and PHP versions before scheduling any work, and read the new composer.json rather than inferring from the release notes, which say nothing about framework support. Confirm ext-intl in all runtime images, including CLI workers and queue consumers. Treat v0.1.0 as a moving target: pin an exact version or a narrow range, and assume minor bumps may break.

Sequencing.

  1. Confirm package identity and lineage — decide whether v0.1.0 is the line we track.
  2. Introduce moneyphp/money and migrate amount handling to value objects behind existing interfaces.
  3. Audit actual usage of Twig money filters, form types, and validators.
  4. Evaluate bundle install against target Symfony/PHP; if blocked, implement equivalent service definitions in-app.
  5. Adopt the bundle's ISO currency service as the single currency-metadata source wherever currency picklists or code validation exist, and delete any duplicate in-app lists.
  6. Only then remove transitional wrappers and standardize on the money API.

Operational Impact

Maintenance. The effort level is still low, but the ownership model needs restating. The bundle is no longer demonstrably dormant, so "treat as vendored code" is slightly too pessimistic — but pre-1.0 versioning means the team must absorb upgrade churn on the maintainer's schedule, not its own. Budget a compatibility review at each Symfony/PHP minor and at each bundle minor, and pin versions between reviews. The currency list is now a data asset the team depends on; add it to whatever process already tracks CLDR and dependency currency data.

Support. Community-only, no vendor SLA. Contributor depth is still unproven — one release, one changelog line, no stated support policy. The underlying moneyphp/money library still carries the healthier maintenance profile and remains where most long-term support risk actually sits. Expect issue response on the bundle to be slow; do not plan around it.

Scaling. Runtime cost stays negligible: value objects, formatting, and a static currency lookup. No I/O, no state, no external calls beyond ext-intl. Stateless PHP workers scale horizontally unaffected. The real scaling constraint is organizational and unchanged: one or two people hold the wiring knowledge. The new currency service slightly reduces that concentration for currency metadata specifically.

Failure modes.

  • Composer resolution failure on framework/PHP upgrade — still the most likely failure, and unaddressed by this release.
  • Stale ISO currency list: if the service definition is static, it will not track ISO 4217 amendments (new codes, redenominations, withdrawn currencies) unless someone refreshes it. Symptom is subtle — a missing or wrong code in a picklist or a rejected valid submission.
  • Pre-1.0 API churn: a minor bump removing or reshaping the currency service or the formatter/parser definitions.
  • Intl/CLDR drift producing formatting differences across PHP versions or environments.
  • Currency or subunit misconfiguration (default currency, decimal places) surfacing as rounding errors in invoices.
  • Silent abandonment returning: one release does not establish a cadence; the package could go quiet again after 0.1.0.
  • No security advisories today, and no guaranteed fix path if a transitive issue appears.

Ramp-up. Short for anyone with Symfony experience; the public surface is a formatter, parser, Twig filter, form type, validator, and now a currency list. The real learning curve remains domain discipline around Money — never store floats, always pair amount with currency, decide rounding policy centrally — which is a library concern, not a bundle concern. Add one line to the internal walkthrough covering "use the shared currency service, do not add a local ISO list," and keep the lint rule or review checklist that prevents float regressions.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log