我的理解是每一个功能模块划分出一个控制器,这样的话,方便以后需求出现变动的时候,修改起来能尽可能的不影响其他模块
但是也看到有人说把所有输出视图的方法都单独抽出来写到 IndexController 控制器里面,而 IndexController 控制器里面再去调用其他控制器的方法。想想好像他们说的也有道理。 但是感觉如果后期需求有变动,那么 IndexController 控制器也要进行修改,好像又违反了高内聚低耦合的原则。(应该是同一个功能下输出视图和数据处理应该是内聚在同一个控制器下)
搞的我现在不知道到底该怎么划分控制器了,有没有人能分享一下自己的划分方式以及规范。
1
2zH 2016-05-20 15:27:17 +08:00
我是按照功能模块划分出几个控制器,不过我做的只是 API 接口,不做 View 。
个人觉得功能模块的控制器作为功能接口,把输出视图方法抽出来做为一个控制器这样会靠谱一些。 |
2
realpg 2016-05-20 15:50:33 +08:00
一个模块一个控制器
那 THINKPHP 还要模块干屁 删了算了…… |
3
likezun 2016-05-20 15:52:36 +08:00 1
TP 有规范吗!!!
|
4
jsjscool 2016-05-20 16:32:35 +08:00
Controller 直接应该避免相互调用,这不符合 MVC 的设计思想。 Components 不就是来做这个的吗
|
5
Balthild 2016-05-20 23:24:27 +08:00 via iPhone
我自己是在一个控制器内部分出用来显示视图的普通方法和用于操作的 Action 方法
|
6
changwei OP @jsjscool ThinkPHP 有个 Event 控制器,这个控制器就是负责调用别的控制器,和 Model 层里面的 service 层差不多
|
7
changwei OP @realpg Thinkphp 的模块指的是那种大模块,比如说前台模块,后台模块,我指的是前台模块中的小模块,比如说负责操作登录的模块,操作用户的模块等等
|