扫码关注官方订阅号
我小白,主要用thinkphp,我看了很多人分享的代码,他们把view和controller之间的分离很彻底,但controller和model之间的分离几乎没有,有的几乎不用model层。大家怎么想?
闭关修行中......
我对TP代码结构:
1、function中只能定义和具体业务无关的函数;2、model中定义数据的‘增删改查’;3、api中定义具体业务相关的逻辑代码4、controller定义和前端的交互(数据验证、数据组装等)5、Behavior中定义事务的前置/后置事件
希望能有帮助
很多時候業務邏輯並不複雜,在 controller 中運用面向過程的編程方法便可高效解決問題。
@Cindy 提到:
function中只能定义和具体业务无关的函数;
竊以爲 MODULE_NAME/Common/function.php 中所含應是 module 或 application (MODULE_NAME == 'Common' 時) 中 model、controller 同 view 三者中至少二者共用的資料。
MODULE_NAME/Common/function.php
MODULE_NAME == 'Common'
thinkphp m层用的不多, 主要是c层。 其实m层不是必须的, 只是为了代码能够高度重用
开发速度快吧,TP中几乎不会复用的数据操作,直接在controller里用M方法要比再额外建个model快得多
如果为了代码复用率,在model中放入比较独立的业务操作也是可行的
我喜欢CodeIgniter框架,但MVC的思想和Thinkphp是一样的。
Codeigniter官方框架文档Model部分有一句很精辟的评论:“什么是模型?——模型是专门用来和数据库打交道的PHP类”
个人做项目的时候,喜欢设计好数据表以后,就在Model把规划的几乎所有数据操作全都先写成一个个独立的方法,然后在Controller或View中调用Model。当然,后来出现的没有预想到的数据库操作,如果我预计绝对不会复用这个操作,我一般就在Controller里面直接写了。比如“管理员删除用户按钮”,很难第二个地方还要再用吧,但是如果需求变成了“用户也能删除自己”,那么我会找出原先的代码放回Model中。
不需要复用的数据库操作,我不太喜欢“Model里面写一个函数,然后Controller再写一个”才实现某个功能,能Controller里面一步实现也是可以的。当然在企业里面,我这么做可能不符合规范
当然,写在Model中的函数,你写在Controller里调用也一样。因为,Codeigniter也说:“如果你不喜欢Model,你可以选择不用,没什么好与不好的……”
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我对TP代码结构:
1、function中只能定义和具体业务无关的函数;
2、model中定义数据的‘增删改查’;
3、api中定义具体业务相关的逻辑代码
4、controller定义和前端的交互(数据验证、数据组装等)
5、Behavior中定义事务的前置/后置事件
希望能有帮助
很多時候業務邏輯並不複雜,在 controller 中運用面向過程的編程方法便可高效解決問題。
@Cindy 提到:
竊以爲
MODULE_NAME/Common/function.php中所含應是 module 或 application (MODULE_NAME == 'Common'時) 中 model、controller 同 view 三者中至少二者共用的資料。thinkphp m层用的不多, 主要是c层。 其实m层不是必须的, 只是为了代码能够高度重用
开发速度快吧,TP中几乎不会复用的数据操作,直接在controller里用M方法要比再额外建个model快得多
如果为了代码复用率,在model中放入比较独立的业务操作也是可行的
我喜欢CodeIgniter框架,但MVC的思想和Thinkphp是一样的。
Codeigniter官方框架文档Model部分有一句很精辟的评论:“什么是模型?——模型是专门用来和数据库打交道的PHP类”
个人做项目的时候,喜欢设计好数据表以后,就在Model把规划的几乎所有数据操作全都先写成一个个独立的方法,然后在Controller或View中调用Model。当然,后来出现的没有预想到的数据库操作,如果我预计绝对不会复用这个操作,我一般就在Controller里面直接写了。比如“管理员删除用户按钮”,很难第二个地方还要再用吧,但是如果需求变成了“用户也能删除自己”,那么我会找出原先的代码放回Model中。
不需要复用的数据库操作,我不太喜欢“Model里面写一个函数,然后Controller再写一个”才实现某个功能,能Controller里面一步实现也是可以的。当然在企业里面,我这么做可能不符合规范
当然,写在Model中的函数,你写在Controller里调用也一样。因为,Codeigniter也说:“如果你不喜欢Model,你可以选择不用,没什么好与不好的……”