了解前端控制器、内核和环境一起工作
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.3,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.3(当前的稳定版本)。
了解前端控制器、内核和环境一起工作
一节如何把握和创造新的环境解释了基本在Symfony如何使用环境中运行您的应用程序ob娱乐下载有不同的配置设置。本节将解释更深入引导您的应用程序时发生了什么。钩到这个过程中,您需要了解三个部分一起工作:
前端控制器
的前端控制器是一个著名的设计模式;这是一个部分的代码所有应用程序请求服务的运行通过。
在ob娱乐下载Symfony标准版,这个角色是由app.php和app_dev.php文件web /
目录中。这是第一个PHP脚本处理请求时执行。
前端控制器的主要目的是创建的实例AppKernel
(这个),让它处理请求并将产生的响应返回给浏览器。
因为每个请求路由,前端控制器可用于执行全球初始化设置内核或之前装修内核与附加功能。例子包括:
- 配置自动装卸机或添加额外的半自动的机制;
- 添加HTTP级缓存通过包装内核的一个实例AppCache;
- 启用(或跳过)ClassCache
- 使调试组件。
前端控制器可以选择通过请求url:
1
http://localhost/app_dev.php/some/path/..。
如您所见,这个URL包含PHP脚本作为前端控制器。您可以使用,轻松地切换前端控制器或将使用一个定制的一个web /
目录(例如。app_cache.php
)。
当使用Apache和RewriteRule Symfony附带的标准版ob娱乐下载,你可以省略文件名的URL和RewriteRule将使用app.php
作为默认。
请注意
几乎所有其他web服务器应该能够实现行为类似于上述RewriteRule。检查你的服务器文档详情或看到欧宝官网下载app配置一个Web服务器。
请注意
确保适当的安全你的前端控制器对未经授权的访问。例如,您不想让一个调试环境可用任意用户在您的生产环境。
技术上,app /控制台脚本运行时使用Symfony命令行上也是一个前端控ob娱乐下载制器,只有不用于web,但对于命令行请求。
内核类
的内核是Symfony的核心。ob娱乐下载它负责建立所有的包,您的应用程序和为他们提供应用程序的配置。然后创建的服务容器之前服务请求处理()方法。
有两个方法中声明KernelInterface剩下未实现的内核因此作为模板方法:
- registerBundles ()
- 它必须返回一个数组的运行应用程序所需的所有包。
- registerContainerConfiguration ()
- 它加载的应用程序配置。
填补这些空白(小),内核和应用程序需要子类实现这些方法。生成的类通常被称为AppKernel
。
同样,Symfony提ob娱乐下载供了一个标准版本AppKernel在app /
目录中。这个类使用环境的名称——这是传递给内核的构造函数方法,可以通过getEnvironment ()决定哪些包来创建。在的逻辑registerBundles ()
方法应该是延长你当你开始包添加到您的应用程序。
当然,你可以创建自己的,替代或额外的AppKernel
变体。所有你需要的是适应(或添加一个新的)前端控制器使用新的内核。
请注意
的名称和位置AppKernel
不是固定的。当把多个内核到一个单独的应用程序,它可能会因此意义添加额外的子目录,例如应用程序/管理/ AdminKernel.php
和应用程序/ api / ApiKernel.php
。最重要的是,你的前端控制器能够适当的内核创建一个实例。
有不同AppKernels
可能是有用的,使不同的前端控制器(可能不同的服务器上)独立运行的部分应用程序(例如,管理UI,前端用户界面和数据库迁移)。
请注意
还有很多AppKernel
比如,可以使用吗覆盖默认的目录结构。但是几率很高,你不需要改变这样的有几个AppKernel
实现。
的环境
正如刚刚提到的,AppKernel
实现另一种方法——吗registerContainerConfiguration ()。该方法负责加载应用程序的配置从右边环境。
环境已经广泛覆盖在前面的章节,你可能还记得,Symfony标准版有三个人ob娱乐下载dev
,刺激
和测试
。
更多的从技术上讲,这些名字只不过是字符串传递从前端控制器AppKernel
的构造函数。这个名字可以使用的registerContainerConfiguration ()决定哪些配置文件加载的方法。
Symfob娱乐下载ony标准版的AppKernel类实现该方法只需加载app / config / config_ * * .yml环境
文件。当然,你可以实现这个方法不同,如果你需要一个更复杂的加载您的配置方式。