V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
changwei
V2EX  ›  程序员

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

  •  
  •   changwei ·
    cw1997 · 2016-05-20 14:37:31 +08:00 · 2652 次点击
    这是一个创建于 2870 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    从上层看 你的大模块目录里有 50 个目录 每个目录里只有一个 controller 文件
    这跟你的大模块目录里有 50 个 controller 文件有何不同,尤其是你这 controller 的名基本会跟目录同名……
    就为了自己访问文件时候多点两下划水?
    changwei
        9
    changwei  
    OP
       2016-05-21 15:07:17 +08:00
    @realpg 说了这么多,那请问如果是你,你会怎么设计?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5053 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 09:36 · PVG 17:36 · LAX 02:36 · JFK 05:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.