首先,实例化 Slim\App
类。这是 Slim 应用程序对象。在实例化期间,Slim 为每个应用程序依赖项注册默认服务。
其次,使用应用程序实例的 get()
、post()
、put()
、delete()
、patch()
、head()
和 options()
路由方法来定义路由。这些实例方法使用应用程序的路由对象注册路由。每个路由方法返回 Route 实例,因此你可以立即调用 Route 实例的方法来添加中间件或指定名称。
第三,调用应用程序实例的 run()
方法。此方法启动以下进程
run()
方法开始内部遍历应用程序的中介件堆栈。这是一个同心结构的中介件层级,它在 Slim 应用程序运行之前(和之后)接受(并选择性操作)环境、请求和响应对象。Slim 应用程序是同心中间件结构中最内层。每个中间件层级都从最外层开始向内调用。
run()
方法到达最内层中介件层级后,它会调用应用程序实例并将当前的 HTTP 请求分派到相应的应用程序路由对象。如果某个路由与 HTTP 方法和 URI 匹配,则会调用该路由的中介件和可调用项。如果未找到匹配路由,则会调用未找到或未允许处理程序。
应用程序分派过程完成后,每个中间件层级都会从最内层开始向外重新控制。
最外层中介件层级交出控制权后,应用程序实例会准备、序列化并返回 HTTP 响应。HTTP 响应头通过 PHP 本机的 header()
方法设置,而 HTTP 响应体输出至当前输出缓冲区。