php - 关于mvc结构的controller和model之间的互动
阿神
阿神 2017-04-11 09:57:14
[PHP讨论组]

我小白,主要用thinkphp,我看了很多人分享的代码,他们把view和controller之间的分离很彻底,但controller和model之间的分离几乎没有,有的几乎不用model层。
大家怎么想?

阿神
阿神

闭关修行中......

全部回复(6)
PHP中文网

我对TP代码结构:

1、function中只能定义和具体业务无关的函数;
2、model中定义数据的‘增删改查’;
3、api中定义具体业务相关的逻辑代码
4、controller定义和前端的交互(数据验证、数据组装等)
5、Behavior中定义事务的前置/后置事件

希望能有帮助

迷茫

很多時候業務邏輯並不複雜,在 controller 中運用面向過程的編程方法便可高效解決問題。

@Cindy 提到:

  1. function中只能定义和具体业务无关的函数;

竊以爲 MODULE_NAME/Common/function.php 中所含應是 module 或 application (MODULE_NAME == 'Common' 時) 中 model、controller 同 view 三者中至少二者共用的資料。

大家讲道理

thinkphp m层用的不多, 主要是c层。 其实m层不是必须的, 只是为了代码能够高度重用

高洛峰

开发速度快吧,TP中几乎不会复用的数据操作,直接在controller里用M方法要比再额外建个model快得多

PHP中文网

如果为了代码复用率,在model中放入比较独立的业务操作也是可行的

天蓬老师

我喜欢CodeIgniter框架,但MVC的思想和Thinkphp是一样的。

Codeigniter官方框架文档Model部分有一句很精辟的评论:“什么是模型?——模型是专门用来和数据库打交道的PHP类”

个人做项目的时候,喜欢设计好数据表以后,就在Model把规划的几乎所有数据操作全都先写成一个个独立的方法,然后在Controller或View中调用Model。当然,后来出现的没有预想到的数据库操作,如果我预计绝对不会复用这个操作,我一般就在Controller里面直接写了。比如“管理员删除用户按钮”,很难第二个地方还要再用吧,但是如果需求变成了“用户也能删除自己”,那么我会找出原先的代码放回Model中。

不需要复用的数据库操作,我不太喜欢“Model里面写一个函数,然后Controller再写一个”才实现某个功能,能Controller里面一步实现也是可以的。当然在企业里面,我这么做可能不符合规范

当然,写在Model中的函数,你写在Controller里调用也一样。因为,Codeigniter也说:“如果你不喜欢Model,你可以选择不用,没什么好与不好的……”

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号