MDB2 真・データベース制御クラス

mysqliをMDB2で利用する

PHP::PEAR

概要

なるほど。
これはいいね。

(ノ・・)ン。。。。。。(((●コロコロッ

PEAR::DBにはこれ以上となくお世話になっている。
だが、データベースがどんどん進化・多様化してきている中、
PEAR::DBはその進化・多様化に追いついていない。
そして重いと評判だ。
(私的にはそうでもないのだが。)

その重さを軽減するために登場したのがPEAR::MDB
リファクタリングしてソースコードがすっきり。
非常に見やすい。
PostgreSQLで使う以外はPEAR::MDBの方が速い(らしい)。
ただ問題なのはPEAR::MDBはすでに開発が終了してしまったことだ。

そこで登場したのがPEAR::MDB2。
元々はPEAR::MDBのPHP5版として登場したのだが、
PEAR::MDB2側に吸収された。
新たにDriver, Moduleという概念が追加され、
ファイルは細かく分割されている。
PEAR::DB_DataObject?のようにテーブル定義をファイルに保存しておき、
それをオブジェクトとして利用することが出来る

DriverとはPECL::PDOのように、
データベースの種類ごとにパッケージ化し、
それぞれを別パッケージとして開発している。
利用者はPEAR::MDB2とは別に使用するデータベースに応じたパッケージをインストールする。
例:

MySQLの時
pear install mdb2
pear install mdb2_mysql
PostgreSQLの時
pear install mdb2
pear install mdb2_pgsql

ModuleとはPEAR::MDB2の拡張機能のことだ。
利用者はモジュールをロードして機能を拡張することになる。
例:

Extended
$dbObj->loadModule('Extended');

PEAR::DBとPEAR::MDB2の相違点

既存のシステムでPEAR::DBを使用していて、
PEAR::MDB2に置き換えるときはいくつか注意が必要だ。

デフォルトでFactory Method(connectも)パターンの他に、
singletonパターンも装備している。
自前でsingletonパターンを作っていた人は、
こっちを利用する方が良いだろう。

autoCommitメソッドは削除されている。
トランザクションを利用するときは
begenTransactionメソッドを利用する。
その際、transactionオプションを有効にしておく必要がある。

$dbObj = & MDB2::singleton($dsn, array('use_transactions'=>true));
$dbObj->beginTransaction();    // transaction start

quoteSmartメソッドは削除されている。
quoteを利用する場合は
quoteメソッドを利用する。

PEAR::DBのgetAll, getAssoc, getOne, getColなどはデフォルトで存在しない。
これらはExtendedモジュールに入っているので、
利用する際はExtendedモジュールをロードしておく必要がある。

私は使わないのだがgetAssocの挙動はPEAR::DBとはかなり異なるようだ。


お名前:


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Third Project
証券会社ランキング比較