弃用 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
真正实现您的服务。
在更大的应用程序中,我有很多服务。使用 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
真正实现您的服务。