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

不是很懂 MVC,求前辈们指教

  •  
  •   techmoe · 2016-04-10 23:40:15 +08:00 · 2150 次点击
    这是一个创建于 2942 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近因为个人要做一些东西的需要重新翻出来了 thinkphp ,然后那个开始就很困扰我的问题又出现了。举个例子,假如我现在想通过 tp 的 mvc 模式构建一个框架,现在想写一个发表帖子的操作,我现在有两种选择:

    1. 把操作写在模型层让控制器去调用模型,然后进行下一步处理
    2. 把操作写在直接控制器里然后通过`M('table_name')`去在控制器里操作模型,然后再进行下一步处理

    并且这个问题是还需要考虑 api 层的实现,我现在的想法是写在模型层里,然后 api 通过定义新控制器实现,如果我要是写在控制器里,那么 api 这层怎么写?

    除了解释这个问题,我还希望前辈能通过其他例子来解释一下这个问题,求指教
    3 条回复    2016-04-11 09:14:18 +08:00
    neoblackcap
        1
    neoblackcap  
       2016-04-10 23:56:51 +08:00
    MVC 的 M 不是你的模型。
    那是 model 层,是一个抽象概念,那是处理业务逻辑的地方,一般我会用一个 service 类去封装(你要调用的 model 已经封装在 serice 类里面了),然后在 controller 层通过传入的参数,调用不同的 service 类, controller 层仅负责调用 servcie 类,最多 20 行。
    pynix
        2
    pynix  
       2016-04-11 01:48:11 +08:00 via Android
    controller 要精简
    wizardforcel
        3
    wizardforcel  
       2016-04-11 09:14:18 +08:00 via Android
    我的模型层只包含数据库映射过来的实体,对实体的操作都在 req handler 里面。

    如果以后真的要加上 web api 的话,就可能出现不同的 req handler 对应一个逻辑,那我会抽象出来一个业务逻辑层。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2265 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:17 · PVG 12:17 · LAX 21:17 · JFK 00:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.