【问题标题】:Symfony 2 bootstrap processSymfony 2 引导过程
【发布时间】:2012-06-05 20:24:25
【问题描述】:

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

【问题讨论】:

    标签: php symfony bootstrapping


    【解决方案1】:

    symfony 的书中有一章是关于这个的:http://symfony.com/doc/current/book/internals.html

    通读整章会让你很好地理解事情的本质。

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

    处理请求

    handle() 方法接受一个请求并总是返回一个响应。为了转换请求,handle() 依赖于解析器和有序的事件通知链(有关每个事件的更多信息,请参阅下一节):

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

    如果在处理过程中抛出异常,kernel.exception 会得到通知,并且监听器有机会将异常转换为响应。如果可行,则通知 kernel.response 事件;如果不是,则重新抛出异常。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 2018-06-17
      • 2013-10-27
      相关资源
      最近更新 更多