开发者社区> 问答> 正文

php中的Model扮演什么角色?

一直在用MVC模式编程,突然对其中Model层的定义有些疑惑,要说其它两层把,一个负责展现的视图,一个负责流程的控制,清晰明了,但是其中的Model又指的什么呢?
从字面上理解,都称其为模型层,什么是模型?大多数Model的定义就像这样

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

    public function delete($id)
    ...
}

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

展开
收起
落地花开啦 2016-06-12 15:24:15 2066 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

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

    所以我的结论是:Model的功能包含但并不限于将数据库抽象为对象,如果项目简单,Model可以等价于ORM,如果复杂,Model最好再细分。

    2019-07-17 19:34:12
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载