In my Laravel 5.7 project, I'm trying to auto-inject a Guzzle instance in to any controller or service that needs it. It's simply enough to just type-hint the class and have it inject automatically, but I don't have control over its initial state. I want some presets on Guzzle before each constructor receives it.
I created a GuzzleServiceProvider that registers like so: (note: verify=false)
$this->app->bind('\GuzzleHttp\Client', function () {
$stack = HandlerStack::create();
$stack->push(Middleware::retry($this->decider(), $this->delay()));
return new Client(['handler' => $stack, 'verify' => false]);
});
This works fine if I use it in a constructor like so:
$client = app()->make('\GuzzleHttp\Client');
It is proven to be an instance of the one registered in the provider because I can dump the $client
and see that verify=false
. Guzzle defaults to true so this is working.
However when injected as a dependency, verify=true
and the handler stack initial settings I made don't have any effect. This is because it's a different instance of Guzzle.
Is there any way for the dependency injection to use the registered instance, rather than creating a new one?
Thanks!
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire