请求生命周期
请求生命周期
静态结构
Yii 应用参照 模型-视图-控制器(MVC)设计模式来组织。模型 代表数据、业务逻辑和规则;视图 展示模型的输出;控制器 接受出入并将其转换为模型和视图命令。
除了 MVC, Yii 应用还有以下部分:
- 入口脚本:终端用户能直接访问的 PHP 脚本, 负责启动一个请求处理周期。
- 应用:能全局范围内访问的对象, 管理协调组件来完成请求.
- 应用组件:在应用中注册的对象, 提供不同的功能来完成请求。
- 模块:包含完整 MVC 结构的独立包, 一个应用可以由多个模块组建。
- 过滤器:控制器在处理请求之前或之后 需要触发执行的代码。
- 小部件:可嵌入到视图中的对象, 可包含控制器逻辑,可被不同视图重复调用。
下面的示意图展示了 Yii 应用的静态结构:
生命周期
每一次 Yii 应用开始处理 HTTP 请求时,它都会进行一个近似的流程。
- 用户提交指向 入口脚本
web/index.php
的请求。 - 入口脚本会加载 配置数组 并创建一个 应用 实例用于处理该请求。
- 应用会通过 request(请求) 应用组件 解析被请求的 路由。
- 应用创建一个 controller(控制器) 实例具体处理请求。
- 控制器会创建一个 action(动作) 实例并为该动作执行相关的 Filters(访问过滤器)。
- 如果任何一个过滤器验证失败,该动作会被取消。
- 如果全部的过滤器都通过,该动作就会被执行。
- 动作会加载一个数据模型,一般是从数据库中加载。
- 动作会渲染一个 View(视图),并为其提供所需的数据模型。
- 渲染得到的结果会返回给 response(响应) 应用组件。
- 响应组件会把渲染结果发回给用户的浏览器。
下面的示意图展示了应用是如何处理一个请求的。
在这个版块中,我们会更加详细地描述某些步骤的具体运作。
💖喜欢本文档的,欢迎点赞、收藏、留言或转发,谢谢支持!
作者邮箱:zhuzixian520@126.com,github地址:github.com/zhuzixian520