一直在用MVC模式编程,突然对其中Model层的定义有些疑惑,要说其它两层把,一个负责展现的视图,一个负责流程的控制,清晰明了,但是其中的Model又指的什么呢?
从字面上理解,都称其为模型层,什么是模型?大多数Model的定义就像这样
class User extends Model
{
public function add(array $user)
{
// 新增代码
}
public function delete($id)
...
}
Model难道只是个对数据库增删查改接口的封装吗?还有些人认为,Model应该是对数据表的映射,它难道是一种ORM的实现?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
假设:除了网页展现之外,你还需要写CLI脚本做数据库的数据统计。你会怎么设计你的Model同时满足网页展现和数据统计两个任务?
再假设:你现在用的是MySQL。有一天你需要用PosgreSQL,甚至要开始使用NoSQL。你会怎么设计你的Model让你的总体代码修改量最小?
回答了这两个问题,我觉得你的问题就解决了。
如果按照目前流行的 api 和restful api 接口的 前后端分离的架构.
那么php 已经基本沦为数据源提供, 那么 mvc中 php 只处理 model 就是crud 然后 php c 负责调度和处理逻辑 拼装数据. v已经没有了
前端js 还要在分 mvc 前端model 负责接收数据 同时也负责一些为了页面显示的数据的拼装.
直接总体就变成 mcmvc
而且随着前端的发展,针对事件机制的框架 例如mvvm结构 实际变成了mcmvvm
如果后端是nosql 可能就是mmvvm c也不太需要了. 一些逻辑也放到前端了.
我的理解 模型存在 可以为多个 controller(控制器) 共享调用