- Can I install mrzard/open-exchange-rates-bundle in a Laravel application?
- Not in any practical sense. It is a Symfony 2 bundle, and Laravel has no concept of bundles, so there is no kernel registration path for it. It also pins symfony/* to the 2.x/3.x line, which directly conflicts with the Symfony 6.x/7.x components Laravel 9+ requires. Forcing it with --ignore-platform-reqs simply trades a Composer error for a runtime fatal.
- Why does Composer fail when I require this package alongside Laravel?
- Composer resolves the whole symfony/* tree as one graph, and this bundle's constraints pull it back to Symfony 2 and 3 era releases while Laravel needs modern Symfony components. The result is an unsatisfiable requirement set rather than a code bug. Run composer why-not mrzard/open-exchange-rates-bundle in a scratch Laravel project to see the exact conflicting constraints on your version.
- What does this bundle actually do beyond calling the Open Exchange Rates API?
- By the assessment it is a thin wrapper over GET /latest.json, /historical/{date}.json, and /currencies.json, exposing configuration and a ready-to-use service. The durable value is the endpoint and response-envelope mapping, not the code itself. That means the meaningful part is reimplementable in a few dozen lines using Laravel's Http facade.
- Is there a Laravel alternative for Open Exchange Rates integration?
- You do not need a package at all: a small ExchangeRateService using Illuminate\Support\Facades\Http, a Cache::remember layer keyed on base currency and date, and a typed DTO covers the capability. Define an ExchangeRateProvider interface with a single OpenExchangeRatesProvider implementation so ECB, Fixer, or exchangerate.host can be swapped in later. That keeps callers stable and avoids any Symfony coupling.
- Does this package handle caching and Open Exchange Rates request quotas?
- The assessment finds no evidence of caching, and a naive per-request call pattern will burn through the free tier's monthly quota within days. Rates update hourly, so cache entries keyed on base currency and date are both safe and necessary. Implement caching in your own provider layer rather than assuming the bundle provides it.
- Is mrzard/open-exchange-rates-bundle maintained and safe for production?
- No. The last release was December 2017, it has a single maintainer, zero dependents, and no PHP 8 or PSR-18 support. That means no security patching, no CVE response, and no downstream users validating the code path under real traffic. Treat it as a reference implementation to read, not a dependency to install.
- Which Open Exchange Rates plan or tier does this bundle assume?
- The documentation does not make this clear, and the code dates from an era before the current free and paid tier split was formalized. Base-currency switching, time-series endpoints, and plan-specific limits are not addressed. Check the current Open Exchange Rates API docs rather than inferring behaviour from 2017 wrapper code.
- How would I migrate from this bundle to a native Laravel implementation?
- Read the bundle source to extract the endpoint paths, the query-parameter shape (app_id, base, symbols), and the response envelope including the rates map and timestamp, disclaimer, and license fields. Then reimplement against the current OXR API documentation, not against the old code. Add contract tests against recorded fixtures so upstream schema drift is caught before it reaches production.
- How long does it take to replace this bundle with a Laravel-native provider?
- Roughly half a day to spike and read the bundle, one to two days to build the native provider with caching, and half a day for contract tests. Swapping it behind an interface is trivial once the provider exists. The whole sequence lands under a week and eliminates the Symfony dependency problem entirely.
- Does the bundle include tests or document the Open Exchange Rates API contract?
- The assessment indicates the API contract is undocumented beyond the code itself, with no meaningful test coverage. That makes behaviour verification dependent on reading the source and probing the live API. Recording fixtures against the real endpoints is the fastest way to establish what the contract actually guarantees.