一个包含类和接口定义的包,可以作为数据库访问库(执行数据操作(DM)任务)的Table Data Gateway(http://bit.ly/1F8Zjfc)和数据映射器(http://bit.ly/1hD2qCc)实现的基础。

3.0.2 2024-04-29 16:59 UTC

README

运行PHP测试和代码质量工具   GitHub发行版(最新SemVer)   GitHub   覆盖率状态   GitHub仓库大小   Packagist下载   GitHub顶级语言   Packagist PHP版本支持   自最新发行版以来的GitHub提交(按日期)   GitHub最后提交   GitHub发行版日期   Libraries.io GitHub仓库的依赖状态

描述

一个包含类和接口定义的包,可以作为数据库访问库(执行数据操作(DM)任务)的表数据网关http://bit.ly/1F8Zjfc)和数据映射器http://bit.ly/1hD2qCc)实现的基石。以下是其主要组件:

  • 一个抽象的模型类(它是通过执行DM任务如选择、插入、删除和更新数据与数据库表交互的表数据网关数据映射器

  • 一个 RecordInterface 接口(包含任何表示数据库表中数据行类的 方法定义,必须实现。此类只能通过 Model 类的实例访问数据库表)

  • 一个可选的 CollectionInterface 接口(包含任何作为 多个 RecordInterface 对象集合使用的类的 方法定义,必须实现)

此 API 的目的是使每个主类的不同实现之间的交换变得容易/简单。例如,一个应用程序可能被编写为使用以下类实现此 API 的包:ModelYYCollectionYY(实现了 CollectionInterface)和 RecordYY(实现了 RecordInterface)。在未来,如果另一个实现此 API 的包有一个执行某些操作比 ModelYY 更高效的 ModelZZ,那么如果您所有的数据访问代码都严格遵循 GDAO API,您应该能够轻松地将 ModelYY 替换为 ModelZZ(您现在将使用 ModelZZCollectionYYRecordYY 在您的更新代码中;它们应该都能很好地协同工作)。

此包不是用来执行数据库模式管理任务,如创建/更改表等。然而,它公开了一个 PDO 对象(通过 \GDAO\Model->getPDO()),可用于执行此类任务和其他无法通过此 API 完成的数据操作(DM)任务。

GDAO Classes & Interfaces

此 API 中的假设和约定。

  • 每个数据库表只有一个自增数字主键列(不支持组合主键;然而,一个非数字的单个主键列应该可以工作)

  • 此 API 的实现必须由至少一个 PDO 对象支持。不要在 API 的实现中使用特定供应商的 php 数据库扩展(例如 mysqli、SQLite3 等)。

  • 此 API 的架构目的是通过 Model 创建记录和集合。

使用此 API 的任何实现的用户不应直接通过其构造函数直接实例化新的集合或记录,而应通过调用适当的实现 \GDAO\Model::createCollection(..) 或 \GDAO\Model::createRecord(..) 来创建它们。

phpdoc 注释块中使用的术语的定义

  • 消费者:使用包含此包中抽象类中指定的 API 的具体实现的包/库的个人开发者或开发人员群体。

  • 实现者:创建包含此包中抽象类中指定的 API 的具体实现的包/库的开发者。

运行测试

./vendor/bin/phpunit --coverage-text

分支

这是此存储库中的分支

  • master:包含此包最新主要版本的代码
  • 2.x:包含此包 2.x 版本的代码
  • 1.X:包含此包 1.x 版本的代码。这个版本从未发布稳定版本,已经被废弃