2012-04-10 3 views
10

У меня есть класс, который принимает существующее PDO соединение в конструкторе:Получить текущий драйвер PDO из существующего соединения?

class Foo { 
    public function __construct(\PDO $conn = NULL) { 
     // ... 
    } 

    // ... 
} 

Мой вопрос: есть ли способ, чтобы определить, какой драйвер существующего PDO соединения в настоящее время используется (предпочтительно из списка found here)? Я не видел ничего в документации API.

Для любопытных, я хотел бы знать, какой драйвер используется, поскольку функциональность в моем классе специфична для базы данных, поэтому я хотел бы проверить, что переданное ему соединение имеет правильный тип ,

ответ

17

Вы можете использовать PDO::getAttribute() с PDO::ATTR_DRIVER_NAME:

$name = $conn->getAttribute(PDO::ATTR_DRIVER_NAME); 
+0

Спасибо. Я считаю, что это сработает. Не похоже, что значения, возвращаемые этим, - это те, которые перечислены на странице доступных драйверов (хотя, например, я вижу строку «oci», возвращенную для Oracle 10g, вместо ожидаемого «PDO_OCI», как указано на этом страница). – FtDRbwLXw6

+2

@drrcknlsn, Это потому, что имена, перечисленные на этой странице, не являются настоящими именами. Используйте http://www.php.net/manual/en/pdo.getavailabledrivers.php, чтобы получить настоящие имена. – Brad

Смежные вопросы