在阅读了很多关于正确架构应用的文章后,我仍然有一个问题:应用业务逻辑必须包含哪些内容? 有人说,逻辑必须包含在模型中(瘦控制器),另一个说模型必须只包含数据库操作逻辑。

例如:

在我的项目(在线商店)中,我有一个product过滤器,用于CategoryController并按product和参数表进行过滤。所以它不是控制器而不是模型。我通过创建名为Filters的新目录来解决它(是的,有几个不同的过滤器),并包含所有逻辑。 但我不知道这是正确的解决方案吗?我想不是,但我不知道如何正确构建它。

所以这是我的问题:

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

感谢,并有一个愉快的一天!

P.S 对不起我的英语不好。

分析解答

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

所以在Laravel中,我严格使用Models进行database操作。我还创建了一个名为Services的文件夹和另一个名为Hydrators的文件夹

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

我的服务和水合器都采用单Responsibility Principle,因为这允许我在其他地方重用相同的代码以避免代码重复!

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

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