携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情
请求生命周期
- 用户向入口脚本 web/index.php 发起请求.
- 入口脚本加载应用配置并创建一个应用 实例去处理请求.
- 应用通过请求组件解析请求的 路由.
- 应用创建一个控制器实例去处理请求.
- 控制器创建一个动作实例并针对操作执行过滤器.
- 如果任何一个过滤器返回失败,则动作取消.
- 如果所有过滤器都通过,动作将被执行.
- 动作会加载一个数据模型,或许是来自数据库.
- 动作会渲染一个视图,把数据模型提供给它.
- 渲染结果返回给响应组件.
- 响应组件发送渲染结果给用户浏览器
应用结构
- Yii 应用参照模型-视图-控制器 (MVC) 设计模式来组织.
- 模型 : 代表数据、业务逻辑和规则;
- 视图 : 展示模型的输出;
- 控制器 : 接受出入并将其转换为模型和视图命令
- 入口脚本 : 终端用户能直接访问的 PHP 脚本, 负责启动一个请求处理周期.
- 应用 : 能全局范围内访问的对象, 管理协调组件来完成请求.
- 应用组件 : 在应用中注册的对象, 提供不同的功能来完成请求.
- 模块 : 包含完整 MVC 结构的独立包, 一个应用可以由多个模块组建.
- 过滤器 : 控制器在处理请求之前或之后 需要触发执行的代码.
- 小部件 : 可嵌入到视图中的对象, 可包含控制器逻辑,可被不同视图重复调用.
入口脚本
- 定义全局常量;
- 注册 Composer 自动加载器;
- 包含 Yii 类文件;
- 加载应用配置;
- 创建一个应用实例并配置;
- 调用 yii\base\Application::run() 来处理请求.
- 定义常量
- YII_DEBUG : 标识应用是否运行在调试模式.当在调试模式下,应用会保留更多日志信息, 如果抛出异常,会显示详细的错误调用堆栈. 因此,调试模式主要适合在开发阶段使用,YII_DEBUG 默认值为 false.
- YII_ENV : 标识应用运行的环境,详情请查阅 配置章节. YII_ENV 默认值为 'prod',表示应用运行在线上产品环境.
- YII_ENABLE_ERROR_HANDLER : 标识是否启用 Yii 提供的错误处理, 默认为 true.
Gii生成代码
Gii可以快速生成一部分代码
- 开启Gii
- 如果是开发环境,应用会包含gii模块
首先在入口脚本处设置当前环境 defined('YII_ENV') or define('YII_ENV', 'dev'); //main-local.php文件中 $config = [ ... ]; if (YII_ENV_DEV) { $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'class' => 'yii\gii\Module', 'allowedIPs' => ['10.0.*', '127.0.*'] ]; } - 生成活动记录类[AR]
- 生成 CRUD 代码
- Model Class
- Search Model Class
- Controller Class