从现有连接获取当前的PDO驱动程序?

FtD*_*Xw6 15 php pdo

我有一个接受PDO构造函数中现有连接的类:

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

    // ...
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有办法确定现有PDO连接当前使用的驱动程序(最好从此处的列表中找到)?我在API文档中没有看到任何内容.

对于好奇,我想知道正在使用哪个驱动程序,因为我的类中的功能是特定于数据库的,所以我想要一种方法来验证传递给它的连接是否是正确的类型.

Tim*_*per 25

你可以用PDO::getAttribute()PDO::ATTR_DRIVER_NAME:

$name = $conn->getAttribute(PDO::ATTR_DRIVER_NAME);
Run Code Online (Sandbox Code Playgroud)

  • @drrcknlsn,那是因为该页面上列出的名字不是真名.使用http://www.php.net/manual/en/pdo.getavailabledrivers.php获取真实姓名. (2认同)

Bra*_*rad 5

用途getAttribute():

http://www.php.net/manual/en/pdo.getattribute.php

$pdo_object->getAttribute(PDO::ATTR_DRIVER_NAME);
Run Code Online (Sandbox Code Playgroud)