Ответ 1
Поэтому вы можете использовать
<?php
echo '<pre>';
var_dump(PDO::getAvailableDrivers());
echo '</pre>';
?>
просто проверьте https://www.php.net/manual/en/pdo.getavailabledrivers.php
Я пытался получить все методы для каждого драйвера PDO (у меня все они установлены на моем ПК с Windows).
Но если я попытаюсь, например, использовать Postgres (pdo_pgsql):
var_export(get_class_methods('PDO'));
Результат:
array (
0 => '__construct',
1 => 'prepare',
2 => 'beginTransaction',
3 => 'commit',
4 => 'rollBack',
5 => 'inTransaction',
6 => 'setAttribute',
7 => 'exec',
8 => 'query',
9 => 'lastInsertId',
10 => 'errorCode',
11 => 'errorInfo',
12 => 'getAttribute',
13 => 'quote',
14 => '__wakeup',
15 => '__sleep',
16 => 'getAvailableDrivers',
)
Но этот список неполон, потому что PDO Postgres включает такие методы, как:
$pdo->pgsqlCopyToArray('my_table');
Есть ли способ получить все методы, а не только значения по умолчанию для PDO?
Заранее спасибо, Celso
Редактирование:
Я тоже пробовал Reflection, и результат неполон, как get_class_methods():
var_export(array_column((new ReflectionClass('PDO'))->getMethods(), 'name'));
Результат тот же:
array (
0 => '__construct',
1 => 'prepare',
2 => 'beginTransaction',
3 => 'commit',
4 => 'rollBack',
5 => 'inTransaction',
6 => 'setAttribute',
7 => 'exec',
8 => 'query',
9 => 'lastInsertId',
10 => 'errorCode',
11 => 'errorInfo',
12 => 'getAttribute',
13 => 'quote',
14 => '__wakeup',
15 => '__sleep',
16 => 'getAvailableDrivers',
)
Поэтому вы можете использовать
<?php
echo '<pre>';
var_dump(PDO::getAvailableDrivers());
echo '</pre>';
?>
просто проверьте https://www.php.net/manual/en/pdo.getavailabledrivers.php
Прежде всего вы должны понять, что такое PDO в соответствии с PHP Docs:
Вступление ¶
Расширение PHP Data Objects (PDO) определяет легкий, согласованный интерфейс для доступа к базам данных в PHP. Каждый драйвер базы данных, который реализует интерфейс PDO, может предоставлять специфичные для базы данных функции как обычные функции расширения. Обратите внимание, что вы не можете выполнять какие-либо функции базы данных, используя расширение PDO само по себе; Для доступа к серверу базы данных необходимо использовать драйвер PDO для конкретной базы данных.
PDO обеспечивает уровень абстракции доступа к данным, что означает, что независимо от того, какую базу данных вы используете, вы используете одни и те же функции для выдачи запросов и извлечения данных. PDO не обеспечивает абстракцию базы данных; он не переписывает SQL и не эмулирует отсутствующие функции. Вы должны использовать полноценный слой абстракции, если вам нужно это средство.
PDO поставляется с PHP 5.1 и доступен как расширение PECL для PHP 5.0; PDO требует новых функций OO в ядре PHP 5 и поэтому не будет работать с более ранними версиями PHP.
В нем четко указано, что PDO - это легкий интерфейс для доступа к базе данных. Посмотрите на примечание при условии, что воспроизводится снова
Примечание: что вы не можете выполнять какие-либо функции базы данных, используя расширение PDO само по себе; Для доступа к серверу базы данных необходимо использовать драйвер PDO для конкретной базы данных.
Чтобы понять более четко, в POD есть четыре вещи:
Интерфейс PDO Заявления PDO Исключения PDO Драйверы PDO
(Одинаково для всех БД) (одинаково для всех БД) (одинаково для всех БД) (различается для всех БД)
get_class_methods
перечисляет только методы PDO, а не другие методы функций get_class_methods
функций исключений и функций драйверов
Теперь подумайте, что есть четыре разных класса для PDO:
Класс PDO Класс PDO_Statement Класс PDO_Exections Класс PDO_Driver
Утверждения, исключения и драйверы внутренне связаны с классом PDO
Теперь вы вызываете get_class_methods
в Class PDO
он покажет Методы Class PDO
и если вы хотите узнать все методы PDO_Driver, вам нужно вызвать правильное имя класса PDO_Driver
.
Теперь, как правильно назвать драйвер PGSQL, это внутренняя часть PHP, и для этого вам нужно изучить внутреннюю часть PHP.