模型,服务或其他方面的方法?

时间:2017-07-14 12:29:01

标签: php design-patterns model-view-controller

我有一个User模型。可以审查用户。因此,我还有一个Review模型,代表用户的评论。通过审核,可以保存用户的评分。

假设我要创建一个方法,根据对他的所有评论来获取用户的评分,例如getRating()方法。我会在User模型上创建此方法吗?或者您是否会创建一个审核管理服务类并在该类中包含该方法?

getRating()方法添加到User模型感觉是合乎逻辑的事情,但另一方面,事情可能会在某一时刻失控,让我留下巨大的{{1模型类。

(这是一个简化的例子,实际上评论可能来自多个来源)。

(PS我已经阅读了一些关于此的帖子和文章,但我找不到满意的答案)。

2 个答案:

答案 0 :(得分:1)

你不应该拥有User模型"和" Review模型"。 MVC中的Model是您的整个核心应用程序,它包含所有数据结构,服务,数据库适配器和使您的应用程序工作的辅助内容。你应该拥有的是:

  • 一个User业务对象和一个Review业务对象,纯粹定义数据结构
  • 一个UserRepositoryUserDAOUserORM或您用于与数据库交互的其他任何范例,它将数据库中的数据转换为User个对象;同样适用于Review
  • 一个UserService,用于处理与用户相关的任务,例如通过数据库接口存储和检索它们,同样适用于Review,或者某些不同命名的服务同时负责这两者任务

所有人都不必映射1:1;业务对象实例可以映射到多个数据库表,相应的*Repository / *DAO /无论如何处理,其中多个可以组合成一个服务,从而使某些事情发生。

检索某些特定数据的操作属于服务。

答案 1 :(得分:0)

为什么不将getRating()添加到Review模型。该方法将接受User对象或用户ID,具体取决于方法中的逻辑。 用户模型没有了解评论的业务。 我的想法。