PHP 面向对象 : business logic layer - DB layer

标签 php oop design-patterns

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

最佳答案

这些中的任何一个都可以( from Fowler's POEAA ):

数据源架构模式:

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

选择哪个取决于您选择了哪些(相同来源):

领域逻辑模式:

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

一般来说,您的业务对象与数据库模式越相似并且以 CRUD 操作为中心,您的数据源架构和域逻辑模式就越简单(虽然不一定)。如果您发现自己有很多阻抗不匹配或有很多与数据库数据不直接相关的业务逻辑,那么您可能会选择域模型/数据映射器(并且可能还包括一个 ORM)。

关于PHP 面向对象 : business logic layer - DB layer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5674386/

相关文章:

php - 传输后数据库无法连接到 Linux 服务器

php - 如何获取 `world_id` = '.$world_id.' 的 mysql 数据库结果;在 PHP 上?

php - Laravel本地化,重定向到右 View

php - PHP中的接口(interface)有什么意义?

algorithm - 确定无冲突集?

PHP 用字母搜索

c++ - 并行命令模式

python - 面向对象的Python

c++ - 接口(interface),在 C++ 中隐藏具体的实现细节

design-patterns - 这种设计模式的名称?有点像策略和响应链