Я пишу простую API-оболочку, и этой оболочке нужен настроенный экземпляр GuzzleHttp \ Client в качестве зависимости.
use GuzzleHttp\Client;
class Api {
private $client;
public function __construct(Client $client)
{
$this->client = $client;
}
}
Все работает нормально, если я создаю Client
экземпляр, используя new Client()
в AppServiceProvider->register()
:
$this->app->when(Api::class)
->needs(Client::class)
->give(function () {
return new Client(['base_uri' => config('services.api.base_uri')]);
});
Но разрешение экземпляра Api
зависает, если я создаю Client
экземпляр, используя make()
или makeWith()
:
$this->app->when(Api::class)
->needs(Client::class)
->give(function () {
return $this->app->makeWith(Client::class, ['config' => ['base_uri' => config('services.api.base_uri')]]);
});
Я провел быстрое тестирование с помощью tinker :
app(\App\Api::class);
и просто зависает навсегда.