有人可以解释一下 symfony 2 应用程序的基本引导过程吗?从入口点到控制器中的特定操作,再到使用 twig 模板系统渲染视图。
问问题
1151 次
1 回答
4
symfony 书中有一章关于此:http ://symfony.com/doc/current/book/internals.html
阅读整章会让你很好地理解事情是如何在幕后工作的。
为了完整起见,我将在这里引用重要的部分:
处理请求
handle() 方法接受一个请求并总是返回一个响应。要转换请求,handle() 依赖于解析器和有序的事件通知链(有关每个事件的更多信息,请参阅下一节):
- 在做任何事情之前,通知 kernel.request 事件——如果其中一个侦听器返回一个 Response,则直接跳转到第 8 步;
- 调用Resolver来确定要执行的Controller;
- kernel.controller 事件的侦听器现在可以按照他们想要的方式操作 Controller 可调用对象(更改它、包装它,...);
- 内核检查 Controller 实际上是一个有效的 PHP 可调用对象;
- 调用解析器来确定要传递给控制器的参数;
- Kernel调用Controller;
- 如果Controller没有返回Response,kernel.view事件的监听者可以将Controller返回值转换为Response;
- kernel.response 事件的监听器可以操作响应(内容和标题);
- 返回响应。
如果在处理过程中抛出异常,kernel.exception 会被通知,并且监听器有机会将异常转换为响应。如果可行,则通知 kernel.response 事件;如果不是,则重新抛出异常。
如果您不希望捕获异常(例如对于嵌入式请求),请通过将 false 作为第三个参数传递给 handle() 方法来禁用 kernel.exception 事件。
于 2012-06-05T23:40:44.817 回答