symfony/dependency-injection, symfony/http-kernel) or via Lumen/Symfony micro-framework compatibility layers.geocoder-php/Geocoder library is framework-agnostic, supporting providers like Google Maps, OpenStreetMap, and Bing. This abstraction reduces vendor lock-in.laravel-debugbar) does not natively support Geocoder metrics. A custom profiler panel would need development.config/geocoder.php. The bundle’s configuration logic would need adaptation (e.g., using Laravel’s Config facade).Bundle system. In Laravel, a composer package (without Bundle namespace) would be more idiomatic.| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| Profiler Gaps | High | Build a lightweight Laravel profiler panel using laravel-debugbar or spatie/laravel-profiler. |
| Config Migration | Medium | Abstract config loading behind a service provider to support both Symfony and Laravel formats. |
| Provider-Specific Quirks | Low | Test with target providers (e.g., Google, OpenStreetMap) early to catch API-specific issues. |
| Performance Overhead | Low | Benchmark with geocoder-php/Geocoder standalone vs. bundled to validate overhead. |
| Dependency Conflicts | Medium | Use composer why-not to detect version conflicts with Laravel’s core dependencies. |
spatie/laravel-geocoder or matthecat/laravel-geocoder.config/services.php.geocoder-php/Geocoder integration to avoid bundle bloat.Illuminate\Container\Container is PSR-11 compliant, matching Symfony’s Symfony\Component\DependencyInjection.Illuminate\Support\Facades\Event aligns with Symfony’s Symfony\Component\EventDispatcher.spatie/laravel-profiler).Extension system must be replaced with Laravel’s service provider + config file.spatie/laravel-profiler (for metrics visualization).guzzlehttp/guzzle (if using HTTP-based providers like Google Maps).symfony/http-client (if needing Symfony’s HTTP client for provider requests).geocoder-php/geocoder via Composer.// app/Providers/GeocoderServiceProvider.php
public function register()
{
$this->app->singleton(GeocoderInterface::class, function ($app) {
return new GeocoderManager([
new Provider\OpenStreetMapProvider(),
new Provider\GoogleMapsProvider($app['config']['services.google_maps.key']),
]);
});
}
BazingaGeocoderBundle to Laravel’s config/geocoder.php.// config/geocoder.php
return [
'providers' => [
'openstreetmap' => [
'enabled' => true,
],
'googlemaps' => [
'enabled' => env('GOOGLE_MAPS_ENABLED', false),
'key' => env('GOOGLE_MAPS_KEY'),
],
],
'default_provider' => 'openstreetmap',
];
geocoder-php/Geocoder to validate performance.| Feature | Symfony Bundle | Laravel Porting Effort | Notes |
|---|---|---|---|
| Provider Configuration | YAML/XML | Medium | Replace with Laravel’s config system. |
| Profiler Integration | Native | High | Requires custom panel. |
| Event Dispatching | Native | Low | Laravel’s events are compatible. |
| Caching | Symfony Cache | Medium | Use Laravel’s Cache facade. |
| HTTP Client | Symfony HTTP | Medium | Replace with Guzzle or Symfony HTTP. |
config/geocoder.php and a service provider to load providers dynamically.geocoder-php/Geocoder is well-maintained (last release: 2026-01-09).laravel-geocoder-bundle fork to avoid upstream Symfony dependencies.UPGRADE.md for provider-specific changes.geocoder-php/Geocoder GitHub issues.How can I help you explore Laravel packages today?