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
核心,它位于 app/Http/Kernel.php
。bootstrap
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