From 4a7d6c8516ce293e9e27adea5931e6937908866d Mon Sep 17 00:00:00 2001 From: Ruud Kamphuis Date: Mon, 12 Jul 2021 10:51:55 +0200 Subject: [PATCH 1/3] Register client alias for `Psr\Http\Client\ClientInterface` --- src/DependencyInjection/HttplugExtension.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/DependencyInjection/HttplugExtension.php b/src/DependencyInjection/HttplugExtension.php index ffc30356..15338cdc 100644 --- a/src/DependencyInjection/HttplugExtension.php +++ b/src/DependencyInjection/HttplugExtension.php @@ -21,6 +21,7 @@ use Http\Message\Authentication\QueryParam; use Http\Message\Authentication\Wsse; use Http\Mock\Client as MockClient; +use Psr\Http\Client\ClientInterface; use Psr\Http\Message\UriInterface; use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\Alias; @@ -383,6 +384,9 @@ private function configureClient(ContainerBuilder $container, $clientName, array if (method_exists($container, 'registerAliasForArgument')) { $container->registerAliasForArgument($serviceId, HttpClient::class, $clientName); + if (interface_exists(ClientInterface::class)) { + $container->registerAliasForArgument($serviceId, ClientInterface::class, $clientName); + } } $plugins = []; From 85f511d6d6679cf5f0d64bc4b355d2e642ebc8ec Mon Sep 17 00:00:00 2001 From: Ruud Kamphuis Date: Mon, 12 Jul 2021 10:52:11 +0200 Subject: [PATCH 2/3] Deprecate client alias registration on HttpClient interface --- src/DependencyInjection/HttplugExtension.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/DependencyInjection/HttplugExtension.php b/src/DependencyInjection/HttplugExtension.php index 15338cdc..81de678a 100644 --- a/src/DependencyInjection/HttplugExtension.php +++ b/src/DependencyInjection/HttplugExtension.php @@ -383,8 +383,10 @@ private function configureClient(ContainerBuilder $container, $clientName, array $serviceId = 'httplug.client.'.$clientName; if (method_exists($container, 'registerAliasForArgument')) { - $container->registerAliasForArgument($serviceId, HttpClient::class, $clientName); + $alias = $container->registerAliasForArgument($serviceId, HttpClient::class, $clientName); if (interface_exists(ClientInterface::class)) { + $alias->setDeprecated('php-http/httplug-bundle', '1.22', 'The "%alias_id%" alias is deprecated, use "Psr\Http\Client\ClientInterface" instead.'); + $container->registerAliasForArgument($serviceId, ClientInterface::class, $clientName); } } From 0006ec2294224a8fa4ec34b113ab93ddb0bf42fe Mon Sep 17 00:00:00 2001 From: Ruud Kamphuis Date: Mon, 26 Jul 2021 09:11:40 +0200 Subject: [PATCH 3/3] Check if HttpClient implements ClientInterface --- src/DependencyInjection/HttplugExtension.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/DependencyInjection/HttplugExtension.php b/src/DependencyInjection/HttplugExtension.php index 81de678a..af412410 100644 --- a/src/DependencyInjection/HttplugExtension.php +++ b/src/DependencyInjection/HttplugExtension.php @@ -384,7 +384,9 @@ private function configureClient(ContainerBuilder $container, $clientName, array if (method_exists($container, 'registerAliasForArgument')) { $alias = $container->registerAliasForArgument($serviceId, HttpClient::class, $clientName); - if (interface_exists(ClientInterface::class)) { + + $interfaces = class_implements(HttpClient::class) ?? []; + if (isset($interfaces[ClientInterface::class])) { $alias->setDeprecated('php-http/httplug-bundle', '1.22', 'The "%alias_id%" alias is deprecated, use "Psr\Http\Client\ClientInterface" instead.'); $container->registerAliasForArgument($serviceId, ClientInterface::class, $clientName);