2012-04-10 46 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 2012-04-10 14:39:43

+2

@drrcknlsn,這是因爲該頁面上列出的名稱不是真名。使用http://www.php.net/manual/en/pdo.getavailabledrivers.php獲取真實姓名。 – Brad 2012-04-10 14:41:50