14

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

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

  • 模型类是表示数据实体(产品、人员等)的简单 bean——主要类似于带有 getter/setter 的数据结构;

  • 控制器类是足够简单的类,它们聚合必要的数据并将它们注入专用的视图模板,然后发送给用户;

  • DAO(DataAccessObject)或存储库类是可以将实体加载和存储到数据库中的类;

  • 服务类通常是包含某些业务逻辑方法的单例——这些方法由控制器、其他服务或计划操作调用,另一方面,它们本身调用 DAO / Repository 方法来获取或修改数据。

例如,如果我有实体PersonProduct并且Order,当用户选择某些产品并单击“将其放入我的购物车/购物篮”new Order时,Person应该创建它并将Product其添加到此Order(我们可能会检查这Person不是坏债人并且Product存在在商店等) - 所有这些工作都是在OrderService某些控制器调用的方法中执行的。

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

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

4

3 回答 3

8

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

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

如果您想知道,您应该如何在 CakePHP 中实现领域业务逻辑,只需查找赞美活动记录模式的文章即可。

个人意见
CakePHP 和 CodeIgniter 是 PHP 中最差的两个框架。
他们充满了不良做法。

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

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

话又说回来,可能是我对MVC 的理解是错误的。

于 2012-08-13T03:24:58.943 回答
1

控制器应该只包含与作为 Web 应用程序的整个事物相关的逻辑。您的业​​务逻辑属于模型。我认为这是您在许多 cakePHP 应用程序中发现的基本错误之一,将太多逻辑放入控制器中,而控制器实际上属于模型。

于 2012-08-12T17:24:51.867 回答
0

在 CakePHP 中。“M”只是一堆数据模型而不是领域模型。在我看来。CakePHP 是为 RAD 开发而设计的。它不适合企业应用程序。

不过我的意见。

于 2015-01-02T03:34:54.863 回答