0

どの MDB2 ドライバーがインストールされているかを検出しようとしています。そうすれば、ユーザーがインストールしたものは何でも使用できます。class_exists("MDB2_Driver_$driver", FALSE) または (@include_once("MDB2/Driver/$driver.php")) を使用してみましたが、機能しません。(最初のものはすべてのドライバーに対して FALSE を返し、2 つ目は既存のドライバーに対してクラッシュします)

それを行う方法についてのアイデアはありますか?MDB2 には、このためのメソッドが含まれていないようです。

4

1 に答える 1

0

これらが PEAR 経由でインストールされている場合は、次のコードでうまくいきます。PEAR レジストリにクエリを実行して、ドライバー パッケージがインストールされているかどうかを判断します。また、これらの各ドライバーのバージョンも表示されます。

require 'PEAR/Registry.php';
$reg = new PEAR_Registry;  
$drivers = array (       
    'MDB2_Driver_fbsql',
    'MDB2_Driver_ibase',
    'MDB2_Driver_mssql',
    'MDB2_Driver_mysql',   
    'MDB2_Driver_mysqli',  
    'MDB2_Driver_oci8',
    'MDB2_Driver_odbc',
    'MDB2_Driver_pgsql',
    'MDB2_Driver_querysim',
    'MDB2_Driver_sqlite',  
    'MDB2_Driver_sqlsrv',
);
foreach ($drivers as $driver) {
    $pkg = $reg->getPackage($driver);
    if (!is_null($pkg)) {  
        $version = $pkg->getVersion();
        echo "$driver v$version installed\n";
    }
}

これは、昨年https://gist.github.com/kenguest/1671361に投稿したコードのスニペットに基づいています。

于 2013-03-30T02:02:19.453 に答える