# 简介
当我们使用现实世界中的任何工具时,如果理解了该工具的工作原理,那么用起来就会得心应手,应用开发也是如此。当你理解了开发工具如何工作,用起来就会更加游刃有余。
这篇文档的目标就是从更高层面向你阐述 Laravel 框架的工作原理。通过对框架更全面的了解,一切都不再那么神秘,你将会更加自信地构建应用。如果你不能马上理解所有这些条款,不要失去信心!先试着掌握一些基本的东西,你的知识水平将会随着对文档的探索而不断提升。
# 生命周期概览
## 第一件事
Laravel 应用的所有请求入口都是 `public/index.php` 文件,所有请求都会被 web 服务器(Apache/Nginx)导向这个文件。 `index.php` 文件包含的代码并不多,但是,这里是加载框架其它部分的起点。
`index.php` 文件载入 Composer 生成的自动加载设置,然后从 `bootstrap/app.php` 脚本获取 Laravel 应用实例,Laravel 的第一个动作就是创建`服务容器`实例。
**HTTP/Console 内核**
接下来,请求被发送到 HTTP 内核或 Console 内核(分别用于处理 Web 请求和 Artisan 命令),这取决于进入应用的请求类型。这两个内核是所有请求都要经过的中央处理器,现在,就让我们聚焦在位于 `app/Http/Kernel.php` 的 HTTP 内核。
HTTP 内核继承自 `Illuminate\Foundation\Http\Kernel` 类,该类定义了一个 `bootstrappers` 数组,这个数组中的类在请求被执行前运行,这些 `bootstrappers` 配置了错误处理、日志、`检测应用环境`以及其它在请求被处理前需要执行的任务。
HTTP 内核还定义了一系列所有请求在处理前需要经过的 HTTP `中间件`,这些中间件处理 `HTTP 会话`的读写、判断应用是否处于维护模式、验证 `CSRF 令牌`等等。
HTTP 内核的 `handle` 方法签名相当简单:获取一个 `Request`,返回一个 `Response`,可以把该内核想象作一个代表整个应用的大黑盒子,输入 HTTP 请求,返回 HTTP 响应。
**服务提供者**
内核启动过程中最重要的动作之一就是为应用载入`服务提供者`,应用的所有服务提供者都被配置在 `config/app.php` 配置文件的 `providers` 数组中。首先,所有提供者的 `register` 方法被调用,然后,所有提供者被注册之后,`boot` 方法被调用。
服务提供者负责启动框架的所有各种各样的组件,比如数据库、队列、验证器,以及路由组件等,正是因为他们启动并配置了框架提供的所有特性,所以服务提供者是整个 Laravel 启动过程中最重要的部分。
**分发请求**
一旦应用被启动并且所有的服务提供者被注册,`Request` 将会被交给路由器进行分发,路由器将会分发请求到路由或控制器,同时运行所有路由指定的中间件。
# 聚焦服务提供者
服务提供者是启动 Laravel 应用中最关键的部分,应用实例被创建后,服务提供者被注册,请求被交给启动后的应用进行处理,整个过程就是这么简单!
对 Laravel 应用如何通过服务提供者构建和启动有一个牢固的掌握非常有价值,当然,应用默认的服务提供者存放在 `app/Providers` 目录下。
默认情况下,`AppServiceProvider` 是空的,这里是添加自定义启动和服务容器绑定的最佳位置,当然,对大型应用,你可能希望创建多个服务提供者,每一个都有着更加细粒度的启动。
> 注:更多细节,可参考 Laravel 5.x 启动过程分析。
- 序言
- 新版特性
- 快速入门
- 升级指南
- 贡献指南
- API文档
- 安装配置
- 目录结构
- Homestead
- Valet
- 部署
- 核心概念
- 请求生命周期
- 服务容器
- 服务提供者
- 门面(Facades)
- 契约(Contracts)
- 框架基础
- 路由
- 中间件
- CSRF 保护
- 控制器
- 请求
- 响应
- 视图
- 生成 URL
- Session
- 验证
- 错误处理
- 日志
- 前端开发
- Blade 模板
- 本地化
- 前端脚手架
- 编译前端资源(Laravel Mix)
- 安全系列
- 登录认证
- API 认证
- 授权
- 加密
- 哈希
- 重置密码
- 进阶系列
- Artisan 控制台
- 集合
- 广播
- 缓存
- 事件
- 文件存储
- 辅助函数
- 邮件
- 通知
- 扩展包开发
- 队列
- 任务调度
- 数据库操作
- 快速入门
- 查询构建器
- 分页
- 迁移
- 数据填充
- Redis
- Eloquent ORM
- 快速入门
- 关联关系
- 集合
- 访问器 & 修改器
- API 资源类
- 序列化
- 应用测试
- 快速入门
- HTTP 测试
- 浏览器测试
- 数据库测试
- 模拟
- 官方扩展包
- Cashier(订阅支付解决方案)
- Envoy(远程操作解决方案)
- Horizon(队列系统解决方案)
- Passport(API 认证解决方案)
- Scout(全文搜索解决方案)
- Socialite(第三方登录解决方案)
- 相关下载
- Laravel 5.6 中文文档离线版
- Laravel 5.6 一键安装包