Skip to content

应用生命周期

1. 实例化

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

2. 路由定义

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

3. 应用程序运行

第三步,你需要调用应用程序实例的 run() 方法。该方法启动以下进程:

A. 进入中间件栈

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

B. 运行应用程序

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

C. 退出中间件栈

应用程序分派过程完成后,每个中间件层会从最内层开始向外层重新获取控制权。

D. 发送 HTTP 响应

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