gpt4 book ai didi

CakePHP - 放置服务逻辑的位置

转载 作者:行者123 更新时间:2023-12-03 23:52:32 25 4
gpt4 key购买 nike

我是一名试图研究 CakePHP 的 Java 程序员——目前我的应用程序结构/设计有问题。我不明白将应用程序的核心逻辑放在哪里。

当我在 JavaEE 中开发时,常见的方法如下所示:

  • 模型类是表示数据实体(产品、人员等)的简单 bean——主要类似于带有 getter/setter 的数据结构;
  • Controller 类是足够简单的类,它们聚合必要的数据并将它们注入(inject)专用的 View 模板,然后发送给用户;
  • DAO(DataAccessObject)或存储库类是可以将实体加载和存储到数据库中的类;
  • 服务类通常是包含某些业务逻辑方法的单例——这些方法由 Controller 、其他服务或计划操作调用,另一方面,它们本身调用 DAO/Repository 方法来获取或修改数据。

  • 例如,如果我有实体 Person , ProductOrder , 当用户选择一些产品并点击“放入我的购物车/购物篮” new Order为此 Person应该创建这个 Product应添加到此 Order (我们可以检查 Person 不是坏账人,并且 Product 存在于商店等) - 所有这些工作都是在 OrderService 的方法中执行的由某个 Controller 调用。

    通常使用某种 IOC(控制反转),以便所有服务和 Controller 都链接到必要的服务等。

    现在我对这一切是如何在 CakePHP 中完成的有些困惑。我应该把这个业务逻辑等放在哪里?

    最佳答案

    在 CakePHP 中,模型层由 active record 的集合组成。实例,称为 AppModel .它们将与存储相关的逻辑(通常放在 DAO 和/或存储库中)与业务逻辑(通常放在“模型”中)结合起来。

    任何其他与域相关的逻辑(来自您的服务)都成为 Controller 的一部分。

    如果你想知道,你怎么样应该 在 CakePHP 中实现领域业务逻辑,只需查找赞美事件记录模式的文章即可。

    Personal opinion
    CakePHP and CodeIgniter are two of the worst frameworks in PHP.
    They are filled with bad practices.



    实际上,如果您正在做正确的 MVC,那么模型层将包含所有业务逻辑以及与之相关的所有内容。模型层由 DAO、存储库、 Domain Objects 组成(你称之为“模型”)和服务。

    虽然您对基于 Java 的代码的描述表明您正在朝着那个方向前进,但 CakePHP 甚至还没有接近它。

    再说一次,可能是 my understanding MVC 是错误的。

    关于CakePHP - 放置服务逻辑的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11924181/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com