Symfony ServiceContainer在编译后删除服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony ServiceContainer在编译后删除服务相关的知识,希望对你有一定的参考价值。
我在ServiceContainer的Symfony文档中读到,在从容器中删除编译容器之前未使用的任何服务。
现在,如果没有缓存容器,我会在请求上编译容器。
如何阻止未使用的服务被删除,特别是如果在编译容器后需要它们?
我知道Drupal通过基本上重写容器(主要是从原始Symfony容器中获取的代码)来做到这一点,但是虽然这是一个选项我想知道是否有更有效的方法来做到这一点?另外,我对Symfony比较新,所以任何相关的文档链接都会非常感激。
答案
默认情况下,所有未使用的private
Symfony服务都被删除,因为它们是私有的,并且未定义为从外部调用它们。
如果private
服务仅使用一次,它将被内联(并从容器中删除)。
但是public
服务不会从容器中删除,即使你不使用它们,所以如果你想在DI容器中保留你的服务,请确保它是公开的
以上是关于Symfony ServiceContainer在编译后删除服务的主要内容,如果未能解决你的问题,请参考以下文章
laravel中的Contracts, ServiceContainer, ServiceProvider, Facades关系
typescript ServiceContainer.ts