PHP OOP:业务逻辑层 - 数据库层

Pab*_*blo 6 php oop design-patterns

什么可以是使用OOP在业务逻辑对象和数据库之间进行分层的好设计?

Gor*_*don 9

任何这些都可行(来自Fowler的POEAA):

数据源架构模式:

  • 表数据网关:充当数据库表的网关的对象.一个实例处理表中的所有行.
  • 行数据网关:作为数据源中单个记录的网关的对象.每行有一个实例.
  • 活动记录:在数据库表或视图中包装行的对象,封装数据库访问,并在该数据上添加域逻辑.
  • 数据映射器:一层Mappers,它在对象和数据库之间移动数据,同时保持它们彼此独立以及映射器本身.

选择哪个取决于您选择的是哪一个(相同来源):

域逻辑模式:

  • 事务脚本: 按程序组织业务逻辑,每个过程处理来自演示文稿的单个请求
  • 域模型: 包含行为和数据的域的对象模型
  • 表模块: 处理数据库表或视图中所有行的业务逻辑的单个实例.
  • 服务层: 定义应用程序与一层服务的边界,这些服务建立一组可用操作并协调应用程序在每个操作中的响应.

通常,业务对象越接近数据库模式并且以CRUD操作为中心,您的数据源架构和Doman逻辑模式就越简单(尽管如此).如果您发现自己有很多阻抗不匹配或许多业务逻辑与数据库数据没有直接关系,那么您可能会选择域模型/数据映射器(也可能包括ORM).


Ric*_*uin 2

您可以采用多种方法来实现此目的,但我想推荐的一种方法是将 DataMapper 模式与域模型相结合。请参阅此页面了解更多信息。

通过这种方式,您可以以一种良好且简单的方式将数据访问与域模型(业务逻辑)分开。如果您对 OOP 有点熟悉,上面链接的页面中的 UML 模型应该阐明方法的方式,以及它如何将数据库逻辑与业务逻辑分开。