我试图获取每个PDO驱动程序的所有方法(我的PC Windows上都安装了所有方法)。
但是,例如,如果我尝试使用Postgres(pdo_pgsql):
var_dump(get_class_methods($pdo));
结果是:
array(17) { [0]=> string(11) "__construct" [1]=> string(7) "prepare" [2]=> string(16) "beginTransaction" [3]=> string(6) "commit" [4]=> string(8) "rollBack" [5]=> string(13) "inTransaction" [6]=> string(12) "setAttribute" [7]=> string(4) "exec" [8]=> string(5) "query" [9]=> string(12) "lastInsertId" [10]=> string(9) "errorCode" [11]=> string(9) "errorInfo" [12]=> string(12) "getAttribute" [13]=> string(5) "quote" [14]=> string(8) "__wakeup" [15]=> string(7) "__sleep" [16]=> string(19) "getAvailableDrivers" }
但是此列表不完整,因为PDO Postgres包含以下方法:
$pdo->pgsqlCopyToArray('my_table');
是否有一种方法可以获取所有方法,而不仅仅是PDO默认值?
预先感谢, 塞尔索(Celso)
修改:
我也尝试过反射,结果像get_class_methods()一样不完整:
var_dump(array_column((new ReflectionClass($pdo))->getMethods(), 'name'));
结果:
array(17) { [0]=> string(11) "__construct" [1]=> string(7) "prepare" [2]=> string(16) "beginTransaction" [3]=> string(6) "commit" [4]=> string(8) "rollBack" [5]=> string(13) "inTransaction" [6]=> string(12) "setAttribute" [7]=> string(4) "exec" [8]=> string(5) "query" [9]=> string(12) "lastInsertId" [10]=> string(9) "errorCode" [11]=> string(9) "errorInfo" [12]=> string(12) "getAttribute" [13]=> string(5) "quote" [14]=> string(8) "__wakeup" [15]=> string(7) "__sleep" [16]=> string(19) "getAvailableDrivers" }
答案 0 :(得分:0)
首先,您必须了解根据PHP Docs声明的PDO:
简介
PHP数据对象(PDO)扩展定义了轻量,一致的 用于访问PHP中的数据库的接口。每个数据库驱动程序 实现PDO接口可以将特定于数据库的功能公开为 常规扩展功能。请注意,您无法执行任何数据库 单独使用PDO扩展功能;您必须使用 特定于数据库的PDO驱动程序来访问数据库服务器。
PDO提供了数据访问抽象层,这意味着, 无论您使用哪个数据库,都使用相同的功能 发出查询并获取数据。 PDO不提供数据库 抽象它不会重写SQL或模拟缺少的功能。您 如果需要的话,应该使用完整的抽象层。
PDO随PHP 5.1一起提供,并且可以作为PHP的PECL扩展使用 5.0; PDO在PHP 5的核心中需要新的OO功能,因此不会在PHP的早期版本中运行。
它明确指出PDO是用于访问数据库的轻量级接口。再看一下这里提供的便笺
注意: ,您不能单独使用PDO扩展名执行任何数据库功能;您必须使用特定于数据库的PDO驱动程序 访问数据库服务器。
要更清楚地了解POD中有四件事,即
PDO接口PDO声明PDO异常PDO驱动程序
(适用于所有数据库)(适用于所有数据库)(适用于所有数据库)(适用于所有数据库)
get_class_methods
仅列出 PDO 的方法,而不列出语句功能,异常功能和驱动程序的其他方法功能
现在认为PDO有四种不同的类:
PDO类PDO_Statement类PDO_Exections类PDO_Driver类
声明,异常和驱动程序在内部链接到PDO类
现在您正在get_class_methods
上调用Class PDO
,它将显示Class PDO
的方法,如果您想知道PDO_Driver的所有方法,则必须调用正确的名称{ {1}}类。
现在PGSQL驱动程序的正确名称是什么,它是PHP的内部结构,为此您必须学习PHP的内部结构。