【问题标题】:Symfony ServiceContainer removes service after compileSymfony ServiceContainer 编译后移除服务
【发布时间】:2017-12-17 23:03:06
【问题描述】:

我在 ServiceContainer 的 Symfony 文档中读到,在编译容器之前未使用的任何服务都会从容器中删除。

现在,如果容器没有被缓存,我会根据请求编译容器。

如何阻止未使用的服务被删除,尤其是在容器编译后需要它们时?

我知道 Drupal 基本上是通过重写容器来做到这一点的(主要是从原始 Symfony 容器中获取的代码),但是虽然这是一个选项,但我想知道是否有更有效的方法来做到这一点?另外,我对 Symfony 比较陌生,因此任何相关的文档链接都将不胜感激。

【问题讨论】:

    标签: php symfony dependency-injection


    【解决方案1】:

    默认情况下,所有未使用的private Symfony 服务都将被删除,因为它们是私有的并且没有定义为从外部调用。

    如果private 服务仅使用一次,它将被内联(并从容器中删除)。

    但是public 服务不会从容器中移除,即使你不使用它们,所以如果你想将你的服务保留在 DI 容器中,请确保它是公开的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 2014-04-28
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      • 2017-09-26
      相关资源
      最近更新 更多