thinkphp 中控制器的划分有什么规范吗?

2016-05-20 14:37:31 +08:00
 changwei

我的理解是每一个功能模块划分出一个控制器,这样的话,方便以后需求出现变动的时候,修改起来能尽可能的不影响其他模块

但是也看到有人说把所有输出视图的方法都单独抽出来写到 IndexController 控制器里面,而 IndexController 控制器里面再去调用其他控制器的方法。想想好像他们说的也有道理。 但是感觉如果后期需求有变动,那么 IndexController 控制器也要进行修改,好像又违反了高内聚低耦合的原则。(应该是同一个功能下输出视图和数据处理应该是内聚在同一个控制器下)

搞的我现在不知道到底该怎么划分控制器了,有没有人能分享一下自己的划分方式以及规范。

2791 次点击
所在节点    程序员
9 条回复
2zH
2016-05-20 15:27:17 +08:00
我是按照功能模块划分出几个控制器,不过我做的只是 API 接口,不做 View 。
个人觉得功能模块的控制器作为功能接口,把输出视图方法抽出来做为一个控制器这样会靠谱一些。
realpg
2016-05-20 15:50:33 +08:00
一个模块一个控制器
那 THINKPHP 还要模块干屁 删了算了……
likezun
2016-05-20 15:52:36 +08:00
TP 有规范吗!!!
jsjscool
2016-05-20 16:32:35 +08:00
Controller 直接应该避免相互调用,这不符合 MVC 的设计思想。 Components 不就是来做这个的吗
Balthild
2016-05-20 23:24:27 +08:00
我自己是在一个控制器内部分出用来显示视图的普通方法和用于操作的 Action 方法
changwei
2016-05-21 08:42:38 +08:00
@jsjscool ThinkPHP 有个 Event 控制器,这个控制器就是负责调用别的控制器,和 Model 层里面的 service 层差不多
changwei
2016-05-21 08:43:37 +08:00
@realpg Thinkphp 的模块指的是那种大模块,比如说前台模块,后台模块,我指的是前台模块中的小模块,比如说负责操作登录的模块,操作用户的模块等等
realpg
2016-05-21 08:47:40 +08:00
@changwei
按照你的设计,假设你有 50 个模块

从上层看 你的大模块目录里有 50 个目录 每个目录里只有一个 controller 文件
这跟你的大模块目录里有 50 个 controller 文件有何不同,尤其是你这 controller 的名基本会跟目录同名……
就为了自己访问文件时候多点两下划水?
changwei
2016-05-21 15:07:17 +08:00
@realpg 说了这么多,那请问如果是你,你会怎么设计?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/280020

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX