Model难道只是个对数据库增删查改接口的封装吗?

一直在用MVC模式编程,突然对其中Model层的定义有些疑惑,要说其它两层把,一个负责展现的视图,一个负责流程的控制,清晰明了,但是其中的Model又指的什么呢?

从字面上理解,都称其为模型层,什么是模型?大多数Model的定义就像这样

class User extends Model{
    public function add(array $user)
    {        // 新增代码
    }

    public function delete($id)
    ...
}

Model难道只是个对数据库增删查改接口的封装吗?还有些人认为,Model应该是对数据表的映射,它难道是一种ORM的实现?


慕无忌1623718
浏览 86回答 2
2回答

米脂

取决于你项目的规模和复杂程度,如果仅仅是简单的数据库CRUD,Model完全被ORM取代没什么问题。在我的项目中,因为有模块话以及多种数据来源的复杂性。Model又被细分为三层:最上层负责事件调度和缓存调度中间抽象出一层,我称之为ModelItem,一个ModelItem的数据来源可能是ORM,也可能是来自Webservice,ModelItem之间可以进行数据与数据间的关系桥接,也就是传统的One2One,Many2Many等关系,但是这种关系并不限于ORM,而是普遍适用于所有数据,所以很有可能一个来自数据库的数据Product可以和来自Taobao Webservice的数据进行链接。最下层是数据接口的底层实现,包括ORM和Webservice。所以我的结论是:Model的功能包含但并不限于将数据库抽象为对象,如果项目简单,Model可以等价于ORM,如果复杂,Model最好再细分。

函数式编程

如果按照目前流行的 api 和restful api 接口的 前后端分离的架构.那么php 已经基本沦为数据源提供, 那么 mvc中 php 只处理 model 就是crud 然后 php c 负责调度和处理逻辑 拼装数据. v已经没有了前端js 还要在分 mvc 前端model 负责接收数据 同时也负责一些为了页面显示的数据的拼装.直接总体就变成 mcmvc而且随着前端的发展,针对事件机制的框架 例如mvvm结构 实际变成了mcmvvm如果后端是nosql 可能就是mmvvm c也不太需要了. 一些逻辑也放到前端了.
打开App,查看更多内容
随时随地看视频慕课网APP