mrzard/open-exchange-rates-bundle
A Symfony bundle that integrates the Open Exchange Rates API, giving your app currency conversion and live exchange rate lookups through a simple, configurable service.
AppKernel, ships a DI extension, and depends on Symfony2-era components. Adopting it implies a decision to remain on (or support) a legacy Symfony 2 codebase, which is itself a product-risk decision.Consider it only if all of the following hold:
latest.json-style spot rates for display purposes.Look elsewhere in every other case:
Illuminate\Support\Facades\Http or Symfony's HttpClient and call the API directly — it's a handful of lines.moneyphp/money or brick/money for the value-object/rounding side, plus a small first-party rate fetcher with caching and a persisted rate table. Provider alternatives worth comparing: exchangerate.host (free, no key), Frankfurter (ECB data, free), OpenExchangeRates paid tiers.Bottom line: do not adopt this package. Re-implement the ~50 lines it saves.
For executives: The capability we actually care about — multi-currency pricing and FX-normalized reporting — is still viable and cheap. But this specific library is a 2017 wrapper for a Symfony 2 framework that reached end-of-life in 2018, with no releases, no maintainers, and zero downstream users. Pinning it into our codebase imports an unpatched liability into anything touching pricing and money. The cost of replacing it with our own small, tested client is measured in hours, not sprints.
For engineering: Treat this as a reference implementation, not a dependency. It tells you what the OpenExchangeRates response shape looks like and roughly how to wire a service. Rebuild it as a first-party class: injectable HTTP client, response caching with a TTL that matches the provider's refresh cadence, a persisted exchange_rates table keyed by (base, quote, date), explicit decimal handling via brick/money or moneyphp/money, and a fallback/stale-rate policy. That gives us testability, auditability, and a swap path to another provider without touching product code.
Risk if we proceed anyway: abandoned dependency, EOL framework, no security response path, and silent breakage on provider API changes — on the one code path where being wrong costs real money.
How can I help you explore Laravel packages today?