Rod*_*nko 13 architecture cakephp
我是Java程序员,试图调查CakePHP - 目前我的应用程序结构/设计有问题.我无法理解在哪里放置应用程序的核心逻辑.
当我在JavaEE中开发时,常见的方法如下所示:
模型类是表示数据实体(产品,人员等)的简单bean - 大多数类似于具有getter/setter的数据结构;
控制器类是足够简单的类,它们聚合必要的数据并将它们注入专用的View模板,然后发送给用户;
DAO(DataAccessObject)或Repository类是可以将实体加载和存储到数据库中的类;
服务类通常是包含某些业务逻辑方法的单例 - 这些方法由控制器,其他服务或调度操作调用,另一方面,它们自己调用DAO/Repository方法来获取或修改数据.
例如,如果我有实体Person,Product并且Order,当用户选择某个产品并点击"将它放入我的购物车/购物篮"时new Order,Person应该创建这个并且Product应该添加到此Order(我们可以检查这Person是不是坏的债务人,Product并且存在在商店等) - 所有这些工作都是在OrderService一些控制器调用的方法中执行的.
通常使用某种IOC(控制反转),以便所有服务和控制器都有必要服务的链接等.
现在,我对CakePHP中如何完成这一切感到有些困惑.我应该把这个业务逻辑等放在哪里?
在CakePHP中,模型层由活动记录实例的集合组成,称为AppModel.它们将与存储相关的逻辑(通常放在DAO和/或存储库中)与业务逻辑(通常用于"模型")相结合.
任何其他域相关逻辑(来自您的服务)都成为控制器的一部分.
如果你想知道,你应该如何在CakePHP中实现域业务逻辑,只需查看赞扬活动记录模式的文章.
个人观点
CakePHP和CodeIgniter是PHP中最糟糕的两个框架.
他们充满了不良做法.
实际上,如果你正在做正确的MVC,那么模型层将包含所有业务逻辑以及与之相关的所有内容.模型层由DAO,存储库,域对象(您称之为"模型")和服务组成.
虽然您对基于Java的代码的描述表明,您正朝这个方向发展,但CakePHP甚至还没有接近它.