diff --git a/README.md b/README.md index f4e1de4..02a4267 100644 --- a/README.md +++ b/README.md @@ -234,6 +234,19 @@ app('geocoder')->reverse(43.882587,-103.454067)->get(); app('geocoder')->geocode('Los Angeles, CA')->dump('kml'); ``` +#### Using Controller +```php +use Geocoder\Laravel\ProviderAndDumperAggregator as Geocoder; + +class GeocoderController extends Controller +{ + public function getGeocode(Geocoder $geocoder) + { + $geocoder->geocode('Los Angeles, CA')->get() + } +} +``` + ## Upgrading Anytime you upgrade this package, please remember to clear your cache, to prevent incompatible cached responses when breaking changes are introduced (this should hopefully only be necessary in major versions): ```sh diff --git a/src/Providers/GeocoderService.php b/src/Providers/GeocoderService.php index 39938a4..e06055f 100644 --- a/src/Providers/GeocoderService.php +++ b/src/Providers/GeocoderService.php @@ -11,9 +11,7 @@ use Geocoder\Laravel\Facades\Geocoder; use Geocoder\Laravel\ProviderAndDumperAggregator; -use Illuminate\Support\Collection; use Illuminate\Support\ServiceProvider; -use ReflectionClass; class GeocoderService extends ServiceProvider { @@ -27,10 +25,17 @@ public function boot() "config" ); $this->mergeConfigFrom($configPath, "geocoder"); - $this->app->singleton("geocoder", function () { - return (new ProviderAndDumperAggregator) - ->registerProvidersFromConfig(collect(config("geocoder.providers"))); + + $providerAndDumperAggregator = (new ProviderAndDumperAggregator) + ->registerProvidersFromConfig(collect(config("geocoder.providers"))); + + $this->app->singleton("geocoder", function ($app) use ($providerAndDumperAggregator) { + return $providerAndDumperAggregator; }); + + // Resolve dependency via class name + // i.e app(ProviderAndDumperAggregator::class) or _construct(ProviderAndDumperAggregator $geocoder) + $this->app->instance(ProviderAndDumperAggregator::class, $providerAndDumperAggregator); } public function register() @@ -38,12 +43,12 @@ public function register() $this->app->alias("Geocoder", Geocoder::class); } - public function provides() : array + public function provides(): array { return ["geocoder"]; } - protected function configPath(string $path = "") : string + protected function configPath(string $path = ""): string { if (function_exists("config_path")) { return config_path($path);