PHP 5 数据对象 (PDO) 抽象层与 Oracle

PDO 简介PHP
主要是由志愿者完成的项目;尽管有少数一些固定的核心开发人员,但是我们没有一个人在全职受薪的开发
PHP。除此之外,我们分别位于世界不同地方,您可以想象长期开发的协调工作是何等困难。因此,PHP
主要是基于突发奇想的个人短期需求来发展的,北京写字楼其原因也多种多样,有的是试验,有的则是因为明天有活要交。尽管这样通常每一步都会改善
PHP,但从长远来看则是缺乏完整性 -
数据库扩展就是一个重要的例子HKRFP。在各种不同的数据扩展之间根本没有真正的一致性,甚至在某些情况下,在这些扩展内部也没有真正的一致性。几乎所有这些扩展都在使用与基础数据库
API
紧密相连的不同代码完成着相同种类的任务。而且因为我们的人手非常有限,因此这就造成了代码更加难以维护,从而为
PHP 带来了很大的问题。由于 PHP 越来越受欢迎并不断成功,因此主要 PHP
数据库扩展的维护者们参加了在德国举行的 LinuxTag 2003
大会,在会上我们交换了对 PHP 前景的看法。在讨论 PHP
发展的随机性时,我们确定了在 PHP
中进行数据库访问的一些目标:?提供一种轻型、清晰、方便的 API?统一各种不同
RDBMS 库的共有特性,但不排除更高级的特性。?通过 PHP
脚本提供可选的较大程度的抽象/兼容性。我们之所以提出了这种 PHP 数据对象
(PDO) 的概念,是因为我们希望通过采用 Zend Engine
2先进的面向对象特性获得该 API 的一些更优秀的性能北京保洁。PHP
中的数据抽象层概念一点都算不上新;在 Google 中查询PHP database
abstraction会找到大约 83,200 个匹配项。它几乎是许多 PHP
开发人员梦寐以求的,而其产生则部分归因于我们不完整的
API。如果您曾经尝试过使用第三方抽象层来完成任何真正重要的工作,通常会发现这些抽象层对于手头的工作来说设计的功能过于强大了
-或者表现为在使用前需要进行大量学习,或者表现为接口速度缓慢,参数需要经过多层脚本函数调用才能到达数据库自有的
API;通常是存在上述两种表象。为什么这些抽象层会存在这种问题?这些抽象层总是在试图完成太多的任务,甚至可能是不可能的任务。我们决定以实用为目标,仅将一些最常见的数据库
API 特性作为我们的基础,并使得 PDO
驱动程序能够将它们特定于产品的特性暴露为常规扩展函数。为什么使用
PDO?听过有关数据库抽象扩展谣传的大多数人会立刻对 PDO 的扩展方面产生疑惑
- 我们是否要分析 SQL,将其转换为相应的后端方言呢?我们如何处理特性 X
或特性 Y,等等。因此,当您听说我们在 PDO
中根本不用为此而担忧时可能会大吃一惊;我们夏令营不希望使所有内容都完全统一,因为要使得这种统一成为可能,只能是将自己限制在最低的通用标准。如果
PDO
不是一个整体的抽象层,那还有什么别的原因值得您考虑使用它吗??性能。PDO
从一开始就吸取了现有数据库扩展成功和失败的经验教训。因为 PDO
的代码是全新的,所以我们有机会重新开始设计性能,以利用 PHP 5
的最新特性。?能力。PDO 旨在将常见的数据库功能作为基础提供,同时提供对于
RDBMS 独特功能的方便访问。?简单。PDO 旨在使您能够轻松使用数据库。API
不会强行介入您的代码,同时会清楚地表明每个函数调用的过程。?运行时可扩展。PDO
扩展是模块化的,使您能够在运行时为您的数据库后端加载驱动程序,而不必重新编译或重新安装整个
PHP 程序。例如,PDO_OCI 扩展会替代 PDO 扩展实现 Oracle 数据库
API。还有一些用于 MySQL、PostgreSQL、ODBC 和 Firebird
的驱动程序,更多的驱动程序尚在开发。您可能想了解 PDO
与其他常用的抽象层的对比情况,例如 PEAR DB 或 ADODB。无论在 API
方面还是在性能方面,PDO
都比其他常见抽象层要轻型,但是涉及到在各个数据库后端之间提供统一性方面,则不如那些抽象层,例如用于处理大量可移植性问题的
PEAR MDB 2 抽象层。在哪里可以获得 PDO?PDO 是通过 PECL,即 PHP
扩展库提供的。如果您在运行 Linux
计算机,请按照下面的说明进行设置;稍后是在 Windows
上安装的详细信息。请注意,PDO
及其驱动程序当前处于alpha状态;这就意味着我们会合理保证没有重大缺陷,但是该程序包功能并不完善

我们还要添加很多功能。虽然我们鼓励您测试该程序包,但是实在不推荐在现阶段将其用于生产。<

名新 PHP 数据对象 (PDO) 数据抽象层的原始开发人员为您简要介绍该抽象层,重点讲述与
Oracle 一起运行的情况。
  需要 PHP:5.0
  需要其他:Oracle 8 或更高版本客户端库
  下载用于 Oracle 的 PDO (Windows):php_pdo.dll, php_澳门新葡萄京官网首页 ,pdo_oci.dll
  下载用于 Oracle 的 PDO (Unix):pdo, pdo_oci
  PDO 简介
  PHP
主要是由志愿者完成的项目;尽管有少数一些固定的“核心”开发人员,但是我们没有一个人在全职受薪的开发
PHP。除此之外,我们分别位于世界不同地方,您可以想象长期开发的协调工作是何等困难。因此,PHP
主要是基于突发奇想的个人短期需求来发展的,其原因也多种多样,有的是试验,有的则是因为“明天有活要交”。尽管这样通常每一步都会改善
PHP,但从长远来看则是缺乏完整性 - 数据库教程扩展就是一个重要的例子。
  在各种不同的数据扩展(oci、mysql、postgresql、mssql
等)之间根本没有真正的一致性,甚至在某些情况下,在这些扩展内部也没有真正的一致性。几乎所有这些扩展都在使用与基础数据库
API 紧密相连的不同代码完成着相同种类的任务。而且因为我们(PHP
核心开发人员和扩展开发人员)的人手非常有限,因此这就造成了代码更加难以维护,从而为
PHP 带来了很大的问题。
  由于 PHP 越来越受欢迎并不断成功,因此主要 PHP
数据库扩展的维护者们参加了在德国举行的 LinuxTag 2003
大会,在会上我们交换了对 PHP 前景的看法。在讨论 PHP
发展的随机性时,我们确定了在 PHP 中进行数据库访问的一些目标:
  ·提供一种轻型、清晰、方便的 API
  ·统一各种不同 RDBMS 库的共有特性,但不排除更高级的特性。
  ·通过 PHP 脚本提供可选的较大程度的抽象/兼容性。
  我们之所以提出了这种 PHP 数据对象 (PDO)
的概念,是因为我们希望通过采用 Zend Engine
2(PHP 5 的核心)先进的面向对象特性获得该 API 的一些更优秀的性能。
  PHP 中的数据抽象层概念一点都算不上新;在 Google 中查询“PHP database abstraction”会找到大约
83,200 个匹配项。它几乎是许多 PHP
开发人员梦寐以求的,而其产生则部分归因于我们不完整的
API。如果您曾经尝试过使用第三方抽象层来完成任何真正重要的工作,通常会发现这些抽象层对于手头的工作来说设计的功能过于强大了 -
或者表现为在使用前需要进行大量学习,或者表现为接口速度缓慢,参数需要经过多层脚本函数调用才能到达数据库自有的
API;通常是存在上述两种表象。
  为什么这些抽象层会存在这种问题?这些抽象层总是在试图完成太多的任务,甚至可能是不可能的任务。我们决定以实用为目标,仅将一些最常见的数据库
API 特性作为我们的基础,并使得 PDO 驱动程序能够将它们特定于产品的特性暴露为常规扩展函数。
  为什么使用 PDO?
  听过有关数据库抽象扩展谣传的大多数人会立刻对 PDO 的扩展方面产生疑惑
- 我们是否要分析 SQL,将其转换为相应的后端方言呢?我们如何处理特性
X 或特性 Y,等等。因此,当您听说我们在 PDO
中根本不用为此而担忧时可能会大吃一惊;我们不希望使所有内容都完全统一,因为要使得这种统一成为可能,只能是将自己限制在最低的通用标准。
  如果 PDO
不是一个整体的抽象层,那还有什么别的原因值得您考虑使用它吗?
  ·性能。PDO 从一开始就吸取了现有数据库扩展成功和失败的经验教训。因为
PDO 的代码是全新的,所以我们有机会重新开始设计性能,以利用 PHP 5
的最新特性。
  ·能力。PDO 旨在将常见的数据库功能作为基础提供,同时提供对于 RDBMS
独特功能的方便访问。
  ·简单。PDO 旨在使您能够轻松使用数据库。API
不会强行介入您的代码,同时会清楚地表明每个函数调用的过程。
  ·运行时可扩展。PDO
扩展是模块化的,使您能够在运行时为您的数据库后端加载驱动程序,而不必重新编译或重新安装整个
PHP 程序。例如,PDO_OCI 扩展会替代 PDO 扩展实现 Oracle 数据库
API。还有一些用于 MySQL、PostgreSQL、ODBC 和 Firebird
的驱动程序,更多的驱动程序尚在开发。
  您可能想了解 PDO 与其他常用的抽象层的对比情况,例如 PEAR DB 或 ADODB。无论在 API
方面还是在性能方面,PDO
都比其他常见抽象层要轻型,但是涉及到在各个数据库后端之间提供统一性方面,则不如那些抽象层,例如用于处理大量可移植性问题的
PEAR MDB 2 抽象层。

发表评论

电子邮件地址不会被公开。 必填项已用*标注