Laravel 5.x 请求的生命周期(附源码)

Laravel最先接触是刚开始实习的时候,那时经过网上的学习资料很快便上手,开发模块接口。后来没有什么深刻和总结,可是当我刚开始学Laravel的时候,我对Laravel最大的认识就是,框架除了路由、中间件和 MVC 设计之外,基本全部的功能都是以模块服务的方式提供,并且在学习Laravel的会让本身有学习设计模式的意识,感受很受启发。下面是对Laravel 5.x 启动过程以及 Http 请求处理过程的源码简要分析。php

入口文件

Laravel和大多数框架同样采用一样的单一入口方式,Laravel的入口文件位于public/index.php,全部的请求都经过你的网页服务器(Apache / Nginx)的设置导向这个文件。index.php 这个文件并无太多的代码。更确切地说,它只是个起始点,用来加载框架的其它部分。html

index.php 此文件会加载由 Composer 生成的自动加载器定义,并获取由 bootstrap/app.php 文件中所生成的 Laravel 应用程序实例。Laravel 自身的第一个动做就是建立一个应用程序/服务容器的实例。数据库

HTTP/终端核心

接下来,进入应用程序的请求的会被送往 HTTP 核心或终端核心,视该请求的种类而定。这两种核心是全部请求流向的中心位置。如今开始,咱们只将焦点放在 HTTP 核心,它位于 app/Http/Kernel.phpbootstrap

HTTP 核心扩展了 Illuminate\Foundation\Http\Kernel 类,它定义了一个 bootstrappers 数组,在请求被运行前会先行运做。这些启动器设置了错误处理、日志记录、侦测应用程序环境,并运行其它须要在请求实际处理前就该被完成掉的工做。设计模式

HTTP 核心也定义了一份 HTTP 中间件清单,全部的请求在被应用程序处理以前都必须通过它们。这些中间件处理 HTTP session 的读写、验证 CSRF 令牌、决定应用程序是否处于维护模式,以及其它更多任务做。数组

HTTP 核心 handle 方法的方法签章至关简单:接收一个 Request 并返回一个 Response。把核心想像成一个大的黑盒子,表明你完整的应用程序。喂给它 HTTP 请求,它就会传回 HTTP 响应。服务器

服务提供者

最重要的核心启动加载行为之一,是加载你的应用程序的服务提供者。应用程序的全部服务提供者,都在 config/app.php 此配置文件的 providers 数组中被设置。首先,全部提供者的 register 方法会被调用,一旦全部提供者都被注册以后,boot 方法就会被调用。session

服务提供者负责在启动时加载框架的全部组件,例如数据库、队列、验证、以及路由组件。服务提供者启动加载并设置框架提供的各类功能,是整个 Laravel 启动加载过程当中最重要的面向。app

服务提供者是启动 Laravel 应用程序的真正关键。应用程序的实例被建立、服务提供者被注册、请求被移转至已启动的应用程序。真正掌握 Laravel 应用程序是如何建立并经过服务提供者启动,将是颇有价值的。固然,应用程序默认的服务提供者存放在 app/Providers 此一目录下。框架

源码分析过程

上面部分是结合文档的理论部分,可能会比较难理解,下面经过源码的方式分析一下整个过程。由于在word文档上整理的分析过程,并且显示的效果会比较好,因此整个分析过程就用截图的方式记录。

以上包括Laravel 5.x 启动过程以及 Http 请求处理过程的基本处理流程,你们能够对照框架的源码一步一步学习,但愿可以帮助你们。

转载请注明出处。
做者:wuxiwei
出处:http://www.cnblogs.com/wxw16/p/6218742.html

相关文章
相关标签/搜索