弃用服务的公共使用

Posted

技术标签:

【中文标题】弃用服务的公共使用【英文标题】:Deprecate public usage of service 【发布时间】:2018-05-28 14:38:27 【问题描述】:

在更大的应用程序中,我有许多服务。使用 Symfony 2.x,我们将大部分服务公开并在控制器中使用:

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

过渡到 Symfony 3.4/4 我想反对公开使用服务。由于许多客户直接使用该服务,因此我必须将其公开。

但我想将服务的公开使用标记为“已弃用”。

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

我能否以某种方式仅弃用公共用途

【问题讨论】:

【参考方案1】:

您可以通过将服务定义上的private 属性设置为true 来创建“想要成为私有”的服务。

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

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

【讨论】:

不错。正是我要找的。我尝试装饰容器本身并发出弃用通知。这个好多了是故意的吗?没有找到与此相关的任何文档。 这是 symfony 核心的内部,在 github.com/symfony/symfony/pull/24104 中引入。顺便说一句,请考虑支持有用的答案:)

以上是关于弃用服务的公共使用的主要内容,如果未能解决你的问题,请参考以下文章

使用 winston-mongodb 后收到警告 [当前服务器发现和监控引擎已弃用]

FOSUserBundle (弃用SecurityContext )

使用 Google 登录 - 我们如何在 .net 中验证 Google ID 令牌服务器端?缺少代码示例,库似乎已弃用

Spring Tool Suite 4 - 是否已弃用Pivotal tc服务器?

当您在 iOS 应用程序和服务器中都使用令牌时如何处理 Facebook 弃用的离线访问权限

如何在 RAML 中将 REST 服务标记为已弃用