# 生命周期
*****
## 应用程序生命周期
### 1. 实例化
首先,实例化`Slim\App`类。这是Slim应用程序对象。在实例化期间,Slim为每个应用程序依赖项注册默认服务。应用程序构造函数接受可选的设置数组,用于配置应用程序的行为。
### 2. 路由定义
其次,使用应用程序实例的`get()`、`post()`、`put()`、`delete()`、`patch()`、`head()`和`options()`路由方法定义路由。这些实例方法用应用程序的Router对象注册路由。每个路由方法都返回路由实例,因此您可以立即调用路由实例的方法来添加中间件或分配名称。
### 3.应用程序运行
第三,调用应用程序实例的`run()`方法。该方法启动如下过程:
A.进入中间件堆栈
`run()`方法开始向内遍历应用程序的中间件堆栈。这是中间件层的同心结构,在slim应用程序运行之前(和之后)接收(可选操作)环境、请求和响应对象。瘦应用程序是同心中间件结构的最内层。每个中间件层都是从最外层内部开始调用的。
b .运行应用程序
`run()`方法到达最内部的中间件层后,调用应用程序实例并将当前HTTP请求分派给适当的应用程序路由对象。如果路由匹配HTTP方法和URI,就会调用路由的中间件和可调用的。如果没有找到匹配的路由,则调用未找到或不允许的处理程序。
C.退出中间件堆栈
应用程序分发过程完成后,每个中间件层从最内层开始向外收回控制。
D.发送HTTP响应
在最外层中间件层割让控制之后,应用程序实例准备、序列化并返回HTTP响应。HTTP响应头是用PHP的本机`header()`方法设置的,HTTP响应体输出到当前输出缓冲区。
- 开始
- 安装
- 升级指南
- Web服务器
- 概念
- 生命周期
- PSR 7
- 中间件
- 依赖容器
- 实例 及通知和警告处理
- Request
- 请求方法
- 请求头信息
- 请求主体
- 上传的文件
- 请求帮助
- 路由对象
- Response
- 响应状态
- 响应标头
- 响应体
- 返回JSON
- 视图模板
- 路由
- 创建路由
- 路由回调
- 路由策略
- 路线占位符
- 路由名
- 路由组
- 路由中间件
- 路由表达式缓存
- 容器识别解析
- 封装中间件
- 路由的中间件
- 错误处理中间件
- 方法重写的中间件
- 输出缓冲中间件
- 内容长度中间件
- 扩展功能
- 以 / 结尾的路由模式
- 获取当前路由
- 设置CORS
- 使用POST表单上传文件
- 第三方组件
- slim-session
- auth
- slim-api-skeleton
- dir