#freeze #setlinebreak(on) * MDB2 真・データベース制御クラス [#z179f3f5] [[mysqliをMDB2で利用する>PEAR/MDB2/mysqli]] #htmlinsert(googleAdsense.html) #ref(http://dozo.rgr.jp/img/img20_file.png,right,nolink,around,PHP::PEAR) ** 概要 [#o3e15e0c] なるほど。 これはいいね。 (ノ・・)ン。。。。。。(((●コロコロッ [[PEAR::DB>PEAR/DB]]にはこれ以上となくお世話になっている。 だが、データベースがどんどん進化・多様化してきている中、 [[PEAR::DB>PEAR/DB]]はその進化・多様化に追いついていない。 そして重いと評判だ。 (私的にはそうでもないのだが。) その重さを軽減するために登場したのが[[PEAR::MDB>PEAR/MDB]]。 リファクタリングしてソースコードがすっきり。 非常に見やすい。 PostgreSQLで使う以外は[[PEAR::MDB>PEAR/MDB]]の方が速い(らしい)。 ただ問題なのは[[PEAR::MDB>PEAR/MDB]]はすでに開発が終了してしまったことだ。 そこで登場したのがPEAR::MDB2。 元々は[[PEAR::MDB>PEAR/MDB]]のPHP5版として登場したのだが、 PEAR::MDB2側に吸収された。 新たにDriver, Moduleという概念が追加され、 ファイルは細かく分割されている。 PEAR::DB_DataObjectのようにテーブル定義をファイルに保存しておき、 それをオブジェクトとして利用することが出来る DriverとはPECL::PDOのように、 データベースの種類ごとにパッケージ化し、 それぞれを別パッケージとして開発している。 利用者はPEAR::MDB2とは別に使用するデータベースに応じたパッケージをインストールする。 例: MySQLの時 pear install mdb2 pear install MDB2_Driver_mysql PostgreSQLの時 pear install mdb2 pear install MDB2_Driver_pgsql ModuleとはPEAR::MDB2の拡張機能のことだ。 利用者はモジュールをロードして機能を拡張することになる。 例: Extended $dbObj->loadModule('Extended'); ** PEAR::DBとPEAR::MDB2の相違点 [#ke17563c] 既存のシステムで[[PEAR::DB>PEAR/DB]]を使用していて、 PEAR::MDB2に置き換えるときはいくつか注意が必要だ。 デフォルトでFactory Method(connectも)パターンの他に、 singletonパターンも装備している。 自前でsingletonパターンを作っていた人は、 こっちを利用する方が良いだろう。 [[autoCommit>PEAR/DB/autoCommit]]メソッドは削除されている。 トランザクションを利用するときは begenTransactionメソッドを利用する。 その際、transactionオプションを有効にしておく必要がある。 $dbObj = & MDB2::singleton($dsn, array('use_transactions'=>true)); $dbObj->beginTransaction(); // transaction start [[quoteSmart>PEAR/DB/quoteSmart]]メソッドは削除されている。 quoteを利用する場合は quoteメソッドを利用する。 [[PEAR::DB>PEAR/DB]]のgetAll, getAssoc, getOne, getColなどはデフォルトで存在しない。 これらはExtendedモジュールに入っているので、 利用する際はExtendedモジュールをロードしておく必要がある。 私は使わないのだがgetAssocの挙動はPEAR::DBとはかなり異なるようだ。 -MDB2用のDBMSドライバの名前はMDB2_Driver_xxxxxx ですね。 -- [[nobby]] &new{2006-05-06 07:13:38 (土)}; -ほんとですね。修正しておきます。 -- [[dozo]] &new{2006-05-06 10:59:21 (土)}; -dddd -- &new{2006-05-18 18:01:54 (木)}; -dddd -- [[dozo]] &new{2006-05-20 00:16:50 (土)}; -Hello. See you -- [[Aerosmith]] &new{2007-06-15 23:22:52 (金)};