理解前端控制器、内核和环境是如何协同工作的
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.1,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
理解前端控制器、内核和环境是如何协同工作的
一节如何掌握和创造新环境解释了Symfony如何使用环境以不同的配置设置运行应用ob娱乐下载程序的基础知识。本节将更深入地解释引导应用程序时会发生什么。要进入这个过程,你需要了解三个共同工作的部分:
请注意
通常,您不需要定义自己的前端控制器或内核
类,因为Symfoob娱乐下载ny提供了合理的默认实现。本文的目的是解释幕后发生的事情。
前置控制器
的前端控制器是一种设计模式;这是一段代码所有由应用程序提供服务的请求贯穿始终。
在Symfonob娱乐下载y Skeleton中,此角色由index . php
在公共/
目录中。这是处理请求时执行的第一个PHP脚本。
前端控制器的主要用途是创建对象的实例内核
(稍后将详细介绍),让它处理请求并将结果响应返回给浏览器。
因为每个请求都要通过它路由,所以可以使用前端控制器在设置内核之前执行全局初始化装修具有附加特性的内核。例子包括:
你可以通过在URL中添加前置控制器来选择它,比如:
1
http://localhost/index.php/some/path/..。
如您所见,这个URL包含用作前端控制器的PHP脚本。您可以使用它切换到一个自定义的前端控制器,位于公共/
目录中。
另请参阅
你几乎不希望在URL中显示前端控制器。这可以通过配置web服务器来实现,如图所示配置Web服务器.
技术上,bin /控制台
在命令行上运行Symfony时使用的脚本也是一个前ob娱乐下载端控制器,只是它不用于web,而是用于命令行请求。
内核类
的内核是Symfony的核心。ob娱乐下载它负责设置应用程序使用的所有包,并为它们提供应用程序的配置。然后,它在服务容器中的请求之前创建服务容器处理()方法。
Symfony应用程序中使用的内核从ob娱乐下载内核并使用MicroKernelTrait.的内核
类中留下一些方法KernelInterface未实现和MicroKernelTrait
定义了几个抽象方法,所以你必须实现它们:
- registerBundles ()
- 它必须返回运行应用程序所需的所有bundle的数组。
- configureRoutes ()
- 它向应用程序添加单独的路由或路由的集合(例如加载一些配置文件中定义的路由)。
- configureContainer ()
-
它从配置文件或使用
loadFromExtension ()
方法,也可以注册新的容器参数和服务。
为了填补这些(小的)空白,您的应用程序需要扩展Kernel类并使用MicroKernelTrait来实现这些方法。ob娱乐下载默认情况下,Symfony在src / Kernel.php
文件。
这个类使用环境的名称——它被传递给内核构造函数方法,可通过getEnvironment ()-决定启用哪些包。这样做的逻辑是正确的registerBundles ()
.
当然,您可以自由地创建自己的、替代的或附加的内核
变体。您所需要的只是调整您的(或添加一个新的)前端控制器来使用新的内核。
请注意
的名称和位置内核
不是固定的。当把在一个应用程序中加入多个内核,因此,例如,添加额外的子目录可能是有意义的src / admin / AdminKernel.php
而且src / api / ApiKernel.php
.重要的是前端控制器能够创建适当内核的实例。
请注意
还有很多内核
可以用于,例如重写默认目录结构.但是很有可能你不需要通过几个来快速改变这些东西内核
实现。
的环境
如上所述,内核
必须实现另一个方法-configureContainer ().该方法负责从右侧加载应用程序的配置环境.
环境已经被广泛地覆盖在上一篇文章中,您可能还记得Symfony默认使用其中三个-ob娱乐下载dev
,刺激
而且测验
.
从技术上讲,这些名称不过是从前端控制器传递到内核
的构造函数。的名称中使用此名称configureContainer ()
方法来决定加载哪些配置文件。
ob娱乐下载Symfony的默认内核
类通过首先加载在配置/包/ *
然后,在配置/包/ ENVIRONMENT_NAME /
.当然,如果您需要一种更复杂的方式来加载配置,您可以自由地以不同的方式实现此方法。