### 最佳实践
* * * * *
模型是代表业务数据、规则和逻辑的中心地方,通常在很多地方重用, 在一个设计良好的应用中, 模型通常比控制器代码多。
归纳起来,模型
* 可包含属性来展示业务数据;
* 可包含验证规则确保数据有效和完整;
* 可包含方法实现业务逻辑;
* 不应直接访问请求,session和其他环境数据, 这些数据应该由控制器传入到模型;
* 应避免嵌入HTML或其他展示代码,这些代码最好在 视图中处理;
* 单个模型中避免太多的 场景
在开发大型复杂系统时应经常考虑最后一条建议, 在这些系统中,模型会很大并在很多地方使用,因此会包含需要规则集和业务逻辑, 最后维护这些模型代码成为一个噩梦, 因为一个简单修改会影响好多地方, 为确保模型好维护,最好使用以下策略:
定义可被多个 应用主体 或 模块 共享的模型基类集合。 这些模型类应包含通用的最小规则集合和逻辑。
在每个使用模型的 应用主体 或 模块中, 通过继承对应的模型基类来定义具体的模型类, 具体模型类包含应用主体或模块指定的规则和逻辑。
例如,在高级应用模板, 你可以定义一个模型基类`common\models\Post`, 然后在前台应用中,定义并使用一个继承`common\models\Post`的具体模型类`frontend\models\Post`, 在后台应用中可以类似地定义backend\models\Post。 通过这种策略,你清楚`frontend\models\Post`只对应前台应用, 如果你修改它,就无需担忧修改会影响后台应用。
- 前文
- 安装前的准备
- windows安装Composer
- Linux安装Composer
- 开始使用
- 安装yii2.0
- 初始化项目
- 检测运行环境
- 数据库
- 连接数据库
- 添加
- 查询
- join
- joinWith
- with
- asArray
- offset
- filterWhere
- 关联查询
- 更新
- AR更新
- with和JoinWith的区别?
- Yii2.0框架基础--数据查询之AR类方法一
- 数据库迁移Migration
- 查看最后执行SQL语句
- 事务处理
- 例子
- 控制器
- rules验证方法
- behaviors行为
- actions动作
- 模型
- 模型使用
- attributeLabels
- tableName
- fields
- 视图
- 显示视图
- 获取配置参数
- 格式化时间显示
- Activeform效果
- Activeform表单部分组件使用方法
- RESTful服务
- 版本化控制
- 邮件mail
- 邮件配置
- 邮件样板
- session
- Yii2.0 Session操作大全(增、删、改、销毁、Session数组赋值、读取)
- 缓存
- 跨APP读取缓存(文件缓存)
- Memcache
- 最佳实践
- 控制器
- 模型
- 视图
- 常见问题
- 解决根目录没有vendor目录
- 安装composer-asset插件错误
- Url隐藏index.php
- nginx配置
- Apache配置
- 配置
- 设置系统默认中文提示
- 数据库问题
- where和andWhere不能同时使用吗?
- debug
- 编辑器使用技巧
- phpstorm
- Redis
- redis安装
- redis例子
- RBAC
- Redis和memcache概念
- 生成接口文档
- Swagger安装
- Swagger语法
- 扩展
- 七牛云存储
- 视频缩略图
- Pjax
- A链接不能跳转解决办法