写在前面:
使用任何框架, 如果理解该框架原理, 应用起来会更加得心应手.
一, 生命周期
1. 入口文件:
Laravel 框架所有请求入口统一进入 / public/index.PHP 文件, 请求通过 Ngxin/Apache 指向该文件.
index.PHP 文件是加载其他文件入口, 本身代码不多. index.PHP 文件载入通过 Composer 生产的自动加载配置, 然后从 Bootstrap/App.PHP 获取应用实例, 创建服务容器.
2.Http/Console 内核
接上面, 请求被发送到 HTTP 内核或 Console 内核, 取决于应用请求类型(会在下篇文章说明). 这两个内核为所有请求必须经过的中央处理器,
下面介绍 App\Http\Kernel 的 HTTP 内核:
HTTP 内核 继承自 Illuminate\Foundation\Http\Kernel 类, 该类定义了一个 bootstrappers 数组, 该数组中的类在请求被执行前运行, bootstrappers 配置了错误处理, 日志, 检测应用环境, 其他在请求被处理前需要处理的任务.
HTTP 内核还定义请求处理前需要经过 HTTP 中间件, 该中间件处理 HTTP 会话的读写, 判断应用是否处于维护模式, 验证 CSRF 令牌 (防止 CSRF 攻击) 等.
HTTP 内核标签方法 handle: 获取一个 Request, 返回一个 Response, 输入 HTTP 请求, 返回 HTTP 响应.
3. 服务提供者
内核启动会为应用载入服务提供者, 服务提供者都被配置在 config/App.PHP 配置文件的 providers 数组中. 服务提供者被注册后, boot 方法被调用.
服务提供者负责启动框架的所有组件, 如数据库, 队列, 验证器, 路由组件等. 因他们启动并配置框架提供的所有特性, 服务提供者是整个 Laravel 启动过程中最重要部分.
「延迟」提供器: 即 providers 数组中较多服务都是提供的实际服务需要才会加载.
4. 分发请求
一旦应用被启动且所有服务提供者被注册, Request 将会被交给路由器进行分发, 路由器将会分发请求到路由或控制器, 同时运行所有路由指定的中间件.
二, 服务提供者
服务提供是启动 Laravel 关键部分, 应用实例被创建, 服务提供被注册, 请求被启动后的应用进行处理.
默认存放在 App/Providers 目录下.
来源: http://www.jianshu.com/p/c61de0943556