techmoe
V2EX  ›  PHP

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

  •  
  •   techmoe · Apr 10, 2016 · 2601 views
    This topic created in 3717 days ago, the information mentioned may be changed or developed.
    最近因为个人要做一些东西的需要重新翻出来了 thinkphp ,然后那个开始就很困扰我的问题又出现了。举个例子,假如我现在想通过 tp 的 mvc 模式构建一个框架,现在想写一个发表帖子的操作,我现在有两种选择:

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

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

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

    如果以后真的要加上 web api 的话,就可能出现不同的 req handler 对应一个逻辑,那我会抽象出来一个业务逻辑层。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5537 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 08:10 · PVG 16:10 · LAX 01:10 · JFK 04:10
    ♥ Do have faith in what you're doing.