silverorange/mdb2

PEAR MDB2 是 PEAR DB 和 Metabase php 数据库抽象层的合并。

3.1.1 2017-12-05 18:20 UTC

This package is not auto-updated.

Last update: 2024-09-15 01:38:38 UTC


README

PEAR MDB2 是将 PEAR DB 和 Metabase 合并成一个数据库抽象层的项目。

有关这些项目的更多信息,请参阅

在这些 URL 上,您还可以找到这两个项目的许可信息和致谢信息。

实际上,MDB2 是 MDB 的第二个主要版本。新 MDB2 与旧 MDB 版本的主要区别在于 API 已彻底重构,以清理 API 并提高性能。

如果您有任何问题或建议,可以联系 Lukas Smith。项目的合著者是 Christopher Linn

或者更好的是,将消息发布到 pear-dev@lists.php.net 邮件列表,以询问与 MDB2 包本身相关的开发问题。对于使用 MDB2 的问题,请直接将问题发送到 pear-general@lists.php.net

特性

MDB2 为所有支持的 RDBMS 提供了一个公共 API。与大多数其他数据库抽象包相比,MDB2 在确保可移植性方面做得更深入。MDB2 的功能包括,但不限于:

  • 面向对象的查询 API
  • DSN(数据源名称)或数组格式用于指定数据库服务器
  • 数据类型抽象和按需数据类型转换
  • 可移植的错误代码
  • 顺序和非顺序行提取以及批量提取
  • 提取行的有序数组和相关数组
  • 缓冲和非缓冲提取
  • 准备/执行(绑定)模拟
  • 序列模拟
  • 替换模拟
  • 有限子查询模拟
  • 支持行限制
  • 支持事务
  • 支持大对象
  • 支持索引/唯一
  • 通过加载高级功能按需扩展框架
  • 表信息接口
  • RDBMS 管理方法(创建、删除、修改)
  • 基于 XML 的 RDBMS 独立模式定义管理
  • 根据更改的 XML 模式修改 DB
  • 从现有 DB(目前是 MySQL 和 PgSQL)逆向工程 XML 模式
  • 完全集成到 PEAR 框架中
  • PHPDoc API 文档

入门

首先,我建议您查看 docs/example.php。这将让您大致了解如何与 MDB2 交互。

之后,您可能想 查看 API。在那里,您还将找到描述 XML 模式格式的文档和一个小教程(它最近从 Metabase 转移过来,因此可能包含错误)。

包内容

作为用户,您只需包含一个 PHP 脚本 MDB2.php,该脚本将安装到您的 PEAR 根目录中。所有其他文件及其包含的类将通过 MDB2::factory()MDB2::connect()MDB2::singleton() 包括。

这将加载额外的类。大多数类都是按需加载的。

此外,MDB2 提供了一个广泛的测试框架,它通过浏览器和命令行界面进行工作。还有一些其他测试用于测试这两个包装器。这些文件将安装到您在 PEAR 根目录中找到的测试目录中。

文档

整个公共 API 和大多数私有方法(除了某些大型对象类)都使用 PHPDoc 注释进行了文档化。大多数 API 都借鉴了 ext-pdo,因此您可以在那里查找详细文档。

测试

对于大多数测试,您可以在相关的配置文件中设置用户名/密码/主机名。用户需要有权创建新的数据库。

test.php/clitest.php/testchoose.php 是 MDB2 提供的原生测试套件。请参阅测试目录中的 README 以获取详细信息。

example.php 包含对 MDB2 原生 API 的几个测试调用。它需要 PEAR::VAR_Dump 包,并配置为使用以下设置

username = metapear
password = funky
hostname = localhost

如何编写新驱动程序

MDB2 包的文档目录中提供了骨架驱动程序。

最佳做法是使用 MDB2 驱动程序并进行修改以适应新的 RDBMS。这将肯定更快,并确保新驱动程序充分利用 MDB2 框架。然而,我建议在修改这些更改时,与现有的 Metabase 驱动程序一起工作,以获得 RDBMS 的灵感。

为了检查驱动程序与 MDB2 的兼容性,您可以使用测试套件(请参阅上面的 测试 部分)

历史

MDB 是在 2001 年 12 月,Manuel broad 加入有关将 Metabase 功能引入 PEAR 的讨论后开始的(又一次)。他建议我可以承担这个项目。经过很多关于如何何时以及是否等问题的讨论后,我在 2002 年 2 月开始了开发。

MDB2 基于 Metabase,但已严重重工作以更好地匹配 PEAR DB API 和 PEAR CS。我迄今为止采取的方法是从 PEAR DB 中取 DB.php 并使其创建一个 Metabase 对象。我略微更改了 Metabase 结构。格式已重工作以更好地适应最终结构(具有 Metabase 和 PEAR DB BC 包装器的 MDB 独立版),以适应 PEAR CS,并使其他人为此做出贡献更容易。

metabase_interface.php 已重命名为 metabase_wrapper.php,现在仅作为 Metabase 的包装器以保持 BC。还需要为 PEAR DB 创建一个包装器。

基本上,结果是接近 PEAR DB 结构的 Metabase。我还添加了 PEAR DB 中缺失的任何方法。正在将错误处理移到 PEAR 错误处理的工作正在进行中,但还需要一些工作。

在 MDB2 中,API 被重构得更加精简。删除了冗余功能。一些功能已移动到核心之外,成为单独的可加载模块。现在,结果集被包装成类似于 PEAR DB 的对象,而不是资源。

致谢

我特别感谢 Manuel Lemos(Metabase 的作者)让我参与这个项目,并且一直在这里提问。我还想感谢 PEAR 项目中的 Tomas Cox 和 Stig S. Bakken 在理解 PEAR、解决问题以及信任我方面的帮助。感谢 Paul Cooper 在 pgsql 驱动程序上的工作。此外,我还要感谢 Alex Black 对这个项目的热情,并为这个项目提供了 binarycloud 作为测试平台。感谢 Christian Dickmann,他是第一个将 MDB 用于实际用途的人,使 MDB 使用 PEAR 错误,并致力于 XML 模式管理器。

最后感谢Peter Bowyer,是他启动了这个讨论,让人们重新拾起这个项目,因为之前被称为“metapear”的版本在缺少反馈的情况下已经闲置。我猜我也应该感谢BackendMedia(我的公司:-)),因为它提供了在公司时间开发这个项目所需的资源(实际上,我大部分时间都在公司时间...所以就这样了)。