集装箱建造流程
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
集装箱建造流程
在本节的前面几页中,几乎没有讨论各种文件和类应该放在哪里。这是因为这取决于你想要在其中使用容器的应用程序、库或框架。查看容器是如何在Symfony2全堆栈框架中配置和构建的,这将帮助您了解所有这些是如何组合在一起的,无论您是使用全堆栈框ob娱乐下载架还是希望在另一个应用程序中使用服务容器。
全堆栈框架使用HttpKernel
组件来管理从应用程序和绑定包加载服务容器配置,并处理编译和缓存。即使你不吸毒HttpKernel
,它应该让您了解在模块化应用程序中组织配置的一种方法。
使用缓存的容器
在构建容器之前,内核会检查容器的缓存版本是否存在。的HttpKernel
具有调试设置,如果此设置为false,则使用缓存版本(如果存在)。如果debug为true,则内核检查配置是否为新的如果是,则使用容器的缓存版本。如果不是,那么容器将从应用程序级配置和bundle的扩展配置构建。
读转储性能配置欲知详情。
应用程序配置
应用程序级配置从应用程序/配置
目录中。加载多个文件,然后在处理扩展名时合并这些文件。这允许针对不同的环境进行不同的配置,例如dev, prod。
这些文件包含参数和服务,这些参数和服务将直接加载到容器中使用配置文件设置容器.它们还包含由扩展处理的配置使用扩展管理配置.这些被认为是包配置,因为每个包包含一个扩展类。
带扩展的包级配置
按照惯例,每个bundle包含一个Extension类,这个类在bundle的DependencyInjection
目录中。这些都是在ContainerBuilder
当内核启动时。当ContainerBuilder
是编译,与bundle扩展相关的应用程序级配置被传递给扩展,扩展通常也加载自己的配置文件,通常是从bundle的配置文件资源/配置
目录中。应用程序级配置通常使用配置对象也存储在bundle的DependencyInjection
目录中。
编译器传递允许包之间的交互
编译器用于允许不同bundle之间的交互,因为它们在扩展类中不会影响彼此的配置。其中一个主要用途是处理带标记的服务,允许包注册服务以供其他包使用,例如Monolog记录器,Twig扩展和Web分析器的数据收集器。编译器传递通常放在包的DependencyInjection /编译器
目录中。
编译和缓存
在编译过程从配置、扩展和编译器传递中加载服务之后,它将被转储,以便下次可以使用缓存。然后在后续请求中使用转储版本,因为它更有效。