Yii框架原理简介
夏永锋
2014-11-26 @ 众成聚乐部
缘起
- 因为Yii的文档很渣
- 为了充分了解框架的能力
- 知其所以然
请求初始化
Yii::app()
应用容器
- 核心组件加载
- 配置加载 - params、components、urlManager等
- PHP对象属性赋值的规则:
- 如果该对象有public的该属性,则直接赋值
- 否则看该对象所在继承树上是否有定义魔术方法__set,如果有则调用__set来处理赋值过程
- 如果连__set也没有,则为该对象生成一个public的属性,然后赋值给它
- 应用容器继承树:CWebApplication -> CApplication -> CModule -> CComponent
路由解析分发
- 两种路由形式:
- get, 如:r=controllerID/actionID
- path, 如:/controllerID/actionID
- 路由规则解析
- 路由规则匹配
- 路由分发
- 过滤器, VS.
beforeAction
组件集成
- 延迟初始化/懒加载
- 组件对象赋值逻辑
- init方法
Model层实现
- 两种使用方式:
- CDbConnection + CDbCommand
- CActiveRecord
- 两种方式的关系
- Model层查询缓存
- CActiveRecord的Schema问题
缓存
- 框架中哪些地方基于缓存进行性能优化?
- 支持多种缓存后端
- 多应用共缓存的key冲突问题
- 缓存依赖
应用模块化
- 应用与模块的关系与区别
- 继承树:CWebModule -> CModule -> CComponent
- 组件配置
- 模块对路由的影响
- 模块嵌套,模块归属链
- 正常使用模块