Symfony 2引导程序

时间:2012-06-05 20:24:26

标签: php symfony bootstrapping

有人可以解释一下symfony 2应用程序的基本引导程序。从入口点到控制器中的特定操作,以及使用twig模板系统的渲染视图。

1 个答案:

答案 0 :(得分:4)

symfony书中有一章关于此:http://symfony.com/doc/current/book/internals.html

阅读整章后,您将对如何在幕后工作方式有一个很好的理解。

为了完整起见,我会在这里引用重要的部分:

处理请求

handle()方法接受Request并始终返回Response。要转换请求,handle()依赖于Resolver和一个有序的事件通知链(有关每个事件的更多信息,请参阅下一节):

  • 在执行任何其他操作之前,会通知kernel.request事件 - 如果其中一个侦听器返回响应,则会直接跳转到步骤8;
  • 调用Resolver来确定要执行的Controller;
  • kernel.controller事件的监听器现在可以按照他们想要的方式调用Controller(更改它,包装它,......);
  • 内核检查Controller实际上是一个有效的PHP可调用文件;
  • 调用Resolver来确定传递给Controller的参数;
  • 内核调用Controller;
  • 如果Controller未返回响应,则kernel.view事件的侦听器可以将Controller返回值转换为Response;
  • kernel.response事件的监听器可以操作Response(内容和标题);
  • 返回响应。

如果在处理期间抛出异常,则会通知kernel.exception,并且侦听器有机会将异常转换为响应。如果可行,则通知kernel.response事件;如果没有,则重新抛出异常。

如果您不希望捕获异常(对于嵌入式请求),请通过将false作为第三个参数传递给handle()方法来禁用kernel.exception事件。