该层为业务的抽象,采用OOP思想进行业务相关的封装与继承。
并不是一个Model就对应一个表,要做到高内聚低耦合的关键在于对象的边界一定要划分清晰,如何“拆”才是关键。
* CURD
## 注:一般情况下非复用性函数无需写在Model里边(必须同一个函数有>=2个地方调用)。
本身Model应该是继承了框架的模型,它已经自带了一些数据的操作方法,下边列举一个【反例】来说明:
~~~php
{
public function save(Post $post);
public function byId(PostId $id);
public function all();
public function byCategory(CategoryId $categoryId);
public function byTag(TagId $tagId);
public function withComments(PostId $id);
public function groupedByMonth();
// ...
}
~~~
如果这些函数实现的操作,都只在【一个地方使用了一次】。这样封装进Model是没有复用性的意义的。
定义Model的关联模型操作与其他属性的方法不在限制之内。
> 注意事项:
> 1. 一般情况下建议直接return object,尽量不要做数组的拼装返回。
> 3. 禁止在模型中使用事务处理,防止事务嵌套。
- 一、概述
- 二、项目建议
- 三、样例代码
- 3.1 代码风格
- 3.2 普通业务处理流程示意图
- 3.3 事务业务处理流程示意图
- 四、命名规范
- 五、注释标准
- 5.1 方法函数
- 5.2 非config文件
- 5.3 修改代码
- 5.4 数组参数
- 六、MVC建议
- 七、分层描述
- 7.1 控制器 [ Controller ]
- 7.2 验证器 [ Validate ]
- 7.3 服务层 [ Service ]
- 7.4 模型层 [ Model ]
- 八、输出标准
- 8.1 控制器 Response
- 8.2 验证器 Bool
- 8.3 模型 Model | Exception
- 8.4 服务层 Mixed
- 九、其他说明
- 十、模型说明