这门课解决什么问题:别只会写增删改查,得搞懂 Yii2 为什么这么跑

很多转岗或者临时接手老项目的同学,面对 Yii2 框架时最容易卡壳的不是写不出代码,而是不知道代码为什么这么跑。你可能跟着文档能凑出一个控制器,也能用 ActiveRecord 查出数据,但一旦遇到依赖注入、服务定位器、事件绑定或者行为(Behavior)的底层逻辑,就完全抓瞎。这门课的核心就是补这个缺口:它不只是教你把界面跑起来,而是带你从请求进入入口文件开始,一步步拆解框架的运行流程和目录结构,最终落到源码层面。如果你之前只会套模板写 CRUD,遇到报错只能瞎猜,那这门课就是帮你把“会用”升级成“懂原理”,让你在排查问题或者做二次开发时心里有底。

适合什么基础,建议先看哪几块

这门课不适合连 PHP 基础语法都磕磕绊绊的同学。你得先有面向对象编程的底子,至少知道接口、继承、trait 是怎么回事,最好对 MVC 模式有基本概念。如果是纯新手,建议先补 PHP 基础再来看,否则到了 HMVC 结构和源码分析部分会非常吃力。对于有基础但没用过 Yii2 的同学,建议先看初识 Yii 那几块,重点搞懂框架安装后的目录结构是怎么划分的,以及运行流程中从请求到响应中间经历了哪些核心组件。这部分看似简单,但很多人干了几年都没真正理清 application 生命周期。接着直接跳到 HMVC 结构部分,重点看控制器的动作参数怎么绑定、视图的布局和主题怎么切换、以及 ActiveRecord 除了基础查询外怎么处理关联模型。这些是日常开发中用得最频繁、也最容易出问题的地方。源码分析部分别一开始就死磕,等基础部分练熟了再回头看,否则容易因为细节太多而劝退。

学完能独立做什么,资料怎么配合练习

学完之后,你应该能独立用 Yii2 搭建一个带前后台分离的项目结构,能熟练配置多环境配置文件,用 Gii 脚手架快速生成模型和增删改查页面后还能根据业务需求做深度定制。更重要的是,面对一个复杂的业务逻辑,你知道该把代码放在控制器、模型还是独立的服务类里,而不是全塞在控制器里变成面条代码。配套资料里的代码片段和示例不要只看不练,每学完一个知识点,比如视图布局或者前端静态资源管理,就自己新建一个空目录照着敲一遍,改改参数看效果差异。遇到 ActiveRecord 的关联查询,别光看视频里的例子,自己建两张有外键关联的表,试试用关联关系查出数据,再打断点跟踪底层是怎么拼 SQL 的。这样练下来,源码分析部分就不会觉得抽象,因为你已经知道每个组件在实际开发中是干什么的。看完后问自己几个问题:框架入口文件里到底做了哪些初始化工作?依赖注入容器是怎么解析对象的?行为(Behavior)是怎么在不改原类代码的情况下动态扩展功能的?如果这几个问题答得上来,说明这门课的核心内容你吃透了。

课程目录

1-1 [初识Yii] Yii安装 (14:38)
1-2 [初识Yii] Yii目录结构分析 (19:42)
1-3 [初识Yii] Yii框架运行流程 (17:46)
1-4 [初识Yii] Gii脚手架的使用 (19:28)
1-5 [初识Yii] 配置详解及环境 (13:25)
2-1 [HMVC结构] 控制器 (20:29)
2-2 [HMVC结构] 控制器(二)动作 (22:56)
2-3 [HMVC结构] 视图 (14:46)
2-4 [HMVC结构] 视图(二)布局 (18:54)
2-5 [HMVC结构] 视图(三)主题 (13:48)
2-6 [HMVC结构] 视图(四)前端静态资源管理 (20:10)
2-7 [HMVC结构] 模型 (22:20)
2-8 [HMVC结构] 模型(二)ActiveRecord的使用 (24:45)
2-9 [HMVC结构] 模型(三)验证 (25:15)
2-10 [HMVC结构] 小部件 (15:01)
2-11 [HMVC结构] 多语言 (13:12)
2-12 [HMVC结构] 模块 (20:25)
3-1 [Yii的请求和响应] 请求 (27:48)
3-2 [Yii的请求和响应] 响应 (23:02)
3-3 [Yii的请求和响应] 路由 (22:53)
4-1 [Yii核心概念] 组件 (22:48)
4-2 [Yii核心概念] 别名 (17:30)
4-3 [Yii核心概念] 自动加载 (21:06)
4-4 [Yii核心概念] 事件 (29:10)
4-5 [Yii核心概念] 缓存 (25:45)
5-1 [Yii会话技术] session (26:18)
5-2 [Yii会话技术] cookie (14:00)
6-1 [Yii其他常用] 发送邮件 (12:19)
6-2 [Yii其他常用] 验证码 (14:39)
6-3 [Yii其他常用] 集成smarty引擎 (16:28)
6-4 [Yii其他常用] 助手类 (17:18)