Symfony ServiceContainer在编译后删除服务

问题描述 投票:0回答:1

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

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

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

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

php symfony dependency-injection
1个回答
2
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.