Symfony 3.3 - Autowiring Deprecation Guzzle

时间:2017-11-30 13:03:41

标签: php symfony dependency-injection autowired

因为我打算升级我的Symfony版本,我想删除所有的Deprecations。我无法弄清楚如何删除我的最后两个错误。

一个是

Autowiring services based on the types they implement is deprecated since Symfony 3.3 and won't be supported in version 4.0. You should rename (or alias) the "eight_points_guzzle.client.trigger_api" service to "GuzzleHttp\ClientInterface" instead.

但在我的服务中,我已经使用客户端界面注入

    public function __construct(
    LoggerInterface $logger,
    EntityManagerInterface $em,
    ClientInterface $client
) {

    $this->em = $em;

    $this->logger = $logger;

    $this->rest = $client;

}

创建的是我的客户端的guzzle客户端(在config.yml中配置) eight_points_guzzle.client .trigger_api

我正在使用此捆绑包:https://github.com/8p/EightPointsGuzzleBundle

任何想法如何解决?

提前谢谢你, 问候兔

1 个答案:

答案 0 :(得分:3)

简短回答:在应用程序的services.yml中添加以下行:

services:
    GuzzleHttp\ClientInterface: "@eight_points_guzzle.client.trigger_api"

请注意,这是 yaml 格式,如果您使用其他格式,请相应调整。

答案很长:Symfony Autowiring documentation的自动装配已经改变 您的服务具有 ClientInterface $ client 作为依赖项,并且此依赖项由symfony自动装配。 Symfony用于按类型自动装配,但不推荐使用。现在,必须定义一个以接口作为名称的服务和要注入的资源的别名。