\ GuzzleHttp \ Клиентское разрешение зависает, если контекстная привязка выполняется с помощью make () или makeWith () - PullRequest
1 голос
/ 19 июня 2020

Я пишу простую 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);

и просто зависает навсегда.

...