【问题标题】:Where I must contain business logic of my application? [closed]我必须在哪里包含我的应用程序的业务逻辑? [关闭]
【发布时间】:2019-10-16 21:59:50
【问题描述】:

看了很多关于正确架构应用的文章,我还是有一个疑问:应用的业务逻辑必须包含在哪里? 因为有人告诉,逻辑必须包含在模型(瘦控制器)中,另一个人说模型必须只包含数据库操作逻辑。

例如:

在我的项目(在线商店)中,我有一个产品过滤器,它在 CategoryController 中使用并由 Products 和 Parameters 表过滤。所以它不是控制器,也不是模型。我通过创建名为 Filters 的新目录来解决它(是的,有几个不同的过滤器),并在那里包含所有逻辑。 但我不知道这是正确的解决方案吗?我认为不是,但我不知道如何正确构建它。

所以这是我的问题:

  1. 我做对了吗?
  2. 我必须在哪里包含业务逻辑?

谢谢,祝你有美好的一天!

附言 对不起我的英语。

【问题讨论】:

  • 与您的俄语版本的问题相同 - 主要基于意见
  • 你的项目是什么框架(网店)
  • 抱歉,忘记了。 Laravel

标签: php laravel architecture business-logic


【解决方案1】:

这取决于偏好。只要你使用正确的标准,你应该没问题!

所以在 Laravel 中,我将 Models 严格用于数据库操作。我还创建了一个名为 Services 的文件夹和另一个名为 Hydrators 的文件夹

我在服务文件夹中的服务处理业务逻辑,例如从模型中获取数据和任何逻辑操作。我的 hydrator 获取数据并按照我希望将数据呈现给视图的方式对其进行排序。

我的服务和 hydrator 都使用 Single Responsibility Principle,因为这允许我在其他地方重用相同的代码以避免代码重复!

我的控制器只是后端的入口点,只做两件事;调用服务并将所需的服务拼接在一起并返回结果(结果可以是从 JSON 到带有数据的视图的任何内容)。

这只是我个人的做事方式。其他人可能有不同的方式。

【讨论】:

  • 感谢您如此详细的回复。我会尝试使用你的技术。
猜你喜欢
  • 1970-01-01
  • 2011-06-28
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
相关资源
最近更新 更多