Database API 和数据库抽象层

admin 提交于 周三, 06/07/2023 - 15:21

Database API

Drupal 提供了一个 数据库抽象层,使得开发者可以使用统一的方式与不同厂牌的数据库交互。 它是构建在 PHP PDO API 之上的,所以它的大部分语法和概念与之很相似。

除了提供统一的 API 来与数据库交互之外,Drupal 数据库抽象层还提供了一种结构化的数据库查询构建方法, 它类似 Laravel EloquentActive Records 类型 ORM,并且具有安全机制,可以有效防止 SQL 攻击。

开发者不应该跳过 数据库抽象层 直接调用 PHP 函数查询数据库,除非是万不得已。

使用 Drupal Database API 主要有如下好处:

  • 使支持多数据库服务器变得容易。
  • 使开发者更方便地使用一些复杂的数据库功能,比如事务。
  • 提供一种结构化的查询构建方式,使得查询更容易编写。
  • 强制使用安全检查,以及其它的一些最佳实践。
  • 提供了简洁的接口,使得查询可以被拦截或修改。

但是,需要知道的是,Database API 并不总是最合适的数据库交互方式, 在后面,我们会学到 Entity API,是一种更高层次,并且更高效的数据库交互方式。

概念

驱动(Driver)

不同厂牌的数据库,Drupal 使用不同的驱动程序来进行支持, Drupal Core 默认对 3 个开源数据库进行了支持: