2012-04-10 8 views
10

私は、コンストラクタ内の既存のPDO接続受け入れクラスている:私の質問は既存の接続から最新のPDOドライバを入手しますか?

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

    // ... 
} 

を次のとおりです。既存のPDO接続が現在(好ましくはリストfound hereから)を使用しているものドライバを判断する方法はありますか?私はAPIのドキュメントで何も見ていませんでした。

不思議なことに、私のクラスの機能はデータベース固有のものなので、どのドライバが使用されているか知りたいので、渡された接続が適切な型であることを検証する方法が必要です。

答えて

17

あなたはPDO::ATTR_DRIVER_NAMEPDO::getAttribute()を使用することができます。

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

ありがとうございました。私はこれがうまくいくと思います。しかし、これによって返される値は、使用可能なドライバページにリストされている値ではないようです(たとえば、Oracle 10gで返される文字列 'oci'が、期待される' PDO_OCI'ではなくページ)。 – FtDRbwLXw6

+2

@drrcknlsn、そのページに記載されている名前は実際の名前ではないからです。実際の名前を取得するにはhttp://www.php.net/manual/en/pdo.getavailabledrivers.phpを使用してください。 – Brad

関連する問題