導入 - 移植性

導入 - 移植性 -- データベースの移植性の関する機能

説明

データベース管理システム(DBMS)は、 それぞれそれ独自の振る舞いを持っています。 例えば、いくつかのデータベースは、 それらの出力でのフィールド名を大文字化や小文字、 一方でそのままにしておきます。 これらのクセは、 別のサーバータイプにあなたのスクリプトの実装を困難にします。 あなたのプログラムが変更せずにDBMSの間で切りえられるように、 PEAR DBは差を克服するために努めます。

設定オプション portability を使用することで、 どのポータビリティモードが可能になるかを制御します。 設定オプションは、 connect() setOption() で設定します。

ポータビリティモードはビット演算で、 |を結合に使用し、 ^で削除をすることが出来ます。 下記にあるこれらの使用例を参照してください。

ポータビリティモード定数

過去との互換性

この機能のうちいくつかは、廃止予定である optimize オプションによって処理されます。 過去との互換性を確保するため、もしこのオプションが portability に設定されていた場合は 以下のデータベースでこれらのポータビリティモードを有効にします。

optimize オプションが performance にセットされる場合、 ポータビリティモードは DB_PORTABILITY_NONE に切り替えられます。

例 33-1接続に移植性オプションをすべてつける


<?php
require_once 'DB.php';

$dsn = 'mysql://user:password@host/database'
$options = array(
    'debug'       => 2,
    'portability' => DB_PORTABILITY_ALL,
);

$db =& DB::connect($dsn, $options);
if (PEAR::isError($db)) {
    die($db->getMessage());
}
?>

例 33-2 ポータビリティオプションの小文字化とトリミングを可能にするために、 setOption()を使用する


<?php
// $db という名前の DB オブジェクトが作成済みであると仮定します...
$db->setOption('portability',
        DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_RTRIM);
?>

例 33-3 トリミング以外のポータビリティオプションをすべて可能にするために、 setOption()を使用する


<?php
// $db という名前の DB オブジェクトが作成済みであると仮定します...
$db->setOption('portability',
        DB_PORTABILITY_ALL ^ DB_PORTABILITY_RTRIM);
?>