爱程序网

Symfony2源码分析——启动过程2

来源: 阅读:

  文章地址:http://www.hcoding.com/?p=46

  上一篇分析Symfony2框架源码,探究Symfony2如何完成一个请求的前半部分,前半部分可以理解为Symfony2框架为处理请求做准备工作,包括container生成、缓存、bundls初始化等一些列准备工作(Symfony2源码分析——启动过程1)。而这一篇讲的是Symfony2如何根据请求的数据生成Response对象,向客户端返回响应数据。

  在分析前需要了解Symfony2的事件驱动机制:Symfony2事件驱动

  言归正传,Symfony2请求的工作流程其实是Symfony2内核的事件驱动完成的,下面是Symfony2框架定义好的内核事件:

final class KernelEvents{    /**     * The REQUEST event occurs at the very beginning of request     * dispatching     *     * This event allows you to create a response for a request before any     * other code in the framework is executed. The event listener method     * receives a SymfonyComponentHttpKernelEventGetResponseEvent     * instance.     *     * @var string     *     * @api     */    const REQUEST = 'kernel.request';    /**     * The EXCEPTION event occurs when an uncaught exception appears     *     * This event allows you to create a response for a thrown exception or     * to modify the thrown exception. The event listener method receives     * a SymfonyComponentHttpKernelEventGetResponseForExceptionEvent     * instance.     *     * @var string     *     * @api     */    const EXCEPTION = 'kernel.exception';    /**     * The VIEW event occurs when the return value of a controller     * is not a Response instance     *     * This event allows you to create a response for the return value of the     * controller. The event listener method receives a     * SymfonyComponentHttpKernelEventGetResponseForControllerResultEvent     * instance.     *     * @var string     *     * @api     */    const VIEW = 'kernel.view';    /**     * The CONTROLLER event occurs once a controller was found for     * handling a request     *     * This event allows you to change the controller that will handle the     * request. The event listener method receives a     * SymfonyComponentHttpKernelEventFilterControllerEvent instance.     *     * @var string     *     * @api     */    const CONTROLLER = 'kernel.controller';    /**     * The RESPONSE event occurs once a response was created for     * replying to a request     *     * This event allows you to modify or replace the response that will be     * replied. The event listener method receives a     * SymfonyComponentHttpKernelEventFilterResponseEvent instance.     *     * @var string     *     * @api     */    const RESPONSE = 'kernel.response';    /**     * The TERMINATE event occurs once a response was sent     *     * This event allows you to run expensive post-response jobs.     * The event listener method receives a     * SymfonyComponentHttpKernelEventPostResponseEvent instance.     *     * @var string     */    const TERMINATE = 'kernel.terminate';    /**     * The FINISH_REQUEST event occurs when a response was generated for a request.     *     * This event allows you to reset the global and environmental state of     * the application, when it was changed during the request.     *     * @var string     */    const FINISH_REQUEST = 'kernel.finish_request';}

相关文章列表: