0
私は依存性注入を使用して、GuzzleのHTTPクライアントのインスタンスを挿入しています。外部サービスを呼び出すいくつかのデータプロバイダクラスがありますが、そのうちのいくつかはプロキシ経由でルーティングする必要があります。これらのクラスに実装されている空のインターフェイスConnectViaProxy
があります。私は、プロキシオプションを設定しがつがつ食うインスタンスをバインドしたいが、私は使用することはできません。クラスがLaravelのコンテナを使用してインターフェイスを実装する場合、別の実装を提供する方法
$this->app->when(ConnectViaProxy::class)
->needs(GuzzleClient::class)
->give(function(): ProxiedGuzzle {
return new ProxiedGuzzle();
});
をwhen
は、具体的なクラスではなくインタフェースを必要とするため。ここで
は、プロキシされるべきで、プロバイダの例です:
use GuzzleHttp\Client as GuzzleClient;
class FooProvider implements Provider, ConnectViaProxy
{
public function __construct(GuzzleClient $client)
{
// Should be an instance of ProxiedGuzzle
dd($client);
}
}
そして、プロキシされるべきではない、プロバイダの例:
use GuzzleHttp\Client as GuzzleClient;
class BarProvider implements Provider
{
public function __construct(GuzzleClient $client)
{
// Should be an instance of GuzzleClient
dd($client);
}
}
そして、ここではProxiedGuzzle
クラスです。
use GuzzleHttp\Client as GuzzleClient;
class ProxiedGuzzle extends GuzzleClient
{
public function __construct()
{
parent::__construct([
'proxy' => [
'http' => PROXY_IP,
'https' => PROXY_IP,
],
]);
}
}
どうすればいいですか?
おかげ