弃用 public 服务的使用

Deprecate public usage of service

在更大的应用程序中,我有很多服务。使用 Symfony 2.x 我们拥有大多数服务 public 并在控制器中使用:

$container->get('service.id');

过渡到 Symfony 3.4/4 我想弃用 public 服务的使用。由于很多客户直接使用该服务,我不得不保留他们public。

但我想标记 public 服务的使用 "deprecated"。

我已经知道如何在 Symfony 中弃用服务定义 (http://symfony.com/blog/new-in-symfony-2-8-deprecated-service-definitions)。

我能否以某种方式仅public弃用

您可以通过在服务定义中将 private 属性设置为 true 来创建 "wanna-be-private" 服务。

yaml: public: true, private: true
php: $definition->setPublic(true)->setPrivate(true);

当从容器中获取服务而不是注入它时,这将触发一个弃用通知,以便您可以在以后 public: false 真正实现您的服务。