生命周期

应用生命周期

1.实例化

首先,实例化Slim\App类。这是 Slim 应用程序对象。在实例化期间,Slim 为每个应用程序依赖项注册默认服务。

2. 路线定义

其次,您使用应用程序实例的get()post()put()delete()patch()head()options()路由方法定义路由。这些实例方法向应用程序的 Router 对象注册一个路由。每个路由方法都会返回 Route 实例,因此您可以立即调用 Route 实例的方法来添加中间件或分配名称。

3.应用程序运行器

第三,调用应用程序实例的run()方法。此方法启动以下过程:

A. 进入中间件栈

run()方法开始向内遍历应用程序的中间件堆栈。这是中间件层的同心结构,在 Slim 应用程序运行之前(和之后)接收(并可选地操作)环境、请求和响应对象。Slim 应用程序是同心中间件结构的最内层。每个中间件层从最外层开始向内调用。

B. 运行应用程序

run()方法到达最内层的中间件层后,它调用应用程序实例并将当前 HTTP 请求分派到适当的应用程序路由对象。如果路由与 HTTP 方法和 URI 匹配,则调用路由的中间件和可调用对象。如果未找到匹配的路由,则调用 Not Found 或 Not Allowed 处理程序。

C. 退出中间件栈

应用程序调度过程完成后,每个中间件层从最内层开始向外收回控制权。

D. 发送 HTTP 响应

在最外层的中间件层放弃控制权后,应用程序实例准备、序列化并返回 HTTP 响应。HTTP 响应头用PHP 的native 方法设置header(),HTTP 响应体输出到当前输出缓冲区。