繁体   English   中英

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

[英]PHP OOP: business logic layer - DB layer

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

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

数据源架构模式:

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

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

域逻辑模式:

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

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

您可以采用以下几种方法,但我想建议的是将DataMapper模式与域模型相结合。 有关更多信息,请参阅此页面

这样,您就可以轻松地从域模型(业务逻辑)中分离数据访问。 如果您对OOP有点熟悉,那么上面链接的页面中的UML模型应该阐明方法的方式,以及它如何从业务逻辑中分离数据库逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM