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

2016-04-10 23:40:15 +08:00
 techmoe
最近因为个人要做一些东西的需要重新翻出来了 thinkphp ,然后那个开始就很困扰我的问题又出现了。举个例子,假如我现在想通过 tp 的 mvc 模式构建一个框架,现在想写一个发表帖子的操作,我现在有两种选择:

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

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

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

如果以后真的要加上 web api 的话,就可能出现不同的 req handler 对应一个逻辑,那我会抽象出来一个业务逻辑层。

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

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

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

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

© 2021 V2EX