【发布时间】:2012-07-20 23:21:13
【问题描述】:
我们正在开发一个代码量很大的 PHP5 项目,上周我在开发一个 RESTful API 的 PoC。我们将模型类与业务类分开。
我发现,尝试实现 CRUD 功能时,直接针对模型实现 CRUD 会非常简单,而针对业务逻辑实现则不然,因为它的功能特定于当前现有的视图,并且它的接口不'不提供实现 API 所需的通用数据访问模型。
想到这里,我想到了以下问题:
与数据交互的最佳方式是什么,保持模型的灵活性和保持模型目前不关心的功能(例如发送邮件更改电子邮件地址时的激活链接)?
以前使用 django 工作很多,其中大部分业务逻辑都在模型中实现,为什么还要保持业务逻辑分离?你有现实生活中的例子吗?这解决了哪些问题(如果有的话)?
我也想到了一些可能的解决方案:
- 将整个业务逻辑放入模型中。在调用 save 方法之后/之前检查哪些字段发生了变化。
- 使用观察者模式通知业务对象模型的变化并直接与模型交互。
你认为有什么优点和缺点,你会怎么做?
【问题讨论】:
-
在 MVC 中,模型不是数据库(或其他一些持久性)。 MVC 中的模型是解决业务问题的重要算法所在。碰巧模型通常与数据库通信,通常@Luc Franken 通过数据访问层(即网关、数据访问、Active Record 和/或数据传输对象)写入。
标签: php model-view-controller design-patterns rest