PHP+Oracleの抽象データベースレイヤ
データベースラッパー作って、と言われたのでちょっと調べてみました。
環境はPHP5.2.0+Oracle XEです。
結論から言うとADOdbがベストと思います。
以下、理由です。
- (そこそこ)早い
- Oracleへの対応度が良い
- 機能が豊富
- 日本語ドキュメントが結構豊富
自分で検証していないですが、クエリは早いそうです。
1人で稼ぐ日記 | PHP:ADODBを使おう その1:速度検証
こっちの記事だと遅いんですがどっちが正しいのやら。
zuzara : PHP5.1.0RC1でPDOとADODB、PEAR::DBのベンチマーク(PostgreSQL&MySQL)
Oracleドライバよりも多くの機能をもっているそうです(例えばAffected_Rows)。
REF CURSORやストアドプロシージャも問題無く使えるのがデカい。
PDOやPropelはそれが出来なかったから諦めました。
Debugしたり、Cache機能がついてたりといろいろ便利です。
AutoexecuteやPrepared Statementも使いこなせば便利そうです。
1人で稼ぐ日記 | PHP:ADODBを使おう その2:デバッグにキャッシュに
php/ADOdb - EthnaWiki
(-_-)zzz....
公式マニュアルもコードベースで読みやすいんですが日本語マニュアルもあるので英語嫌いな人にはいいかも。
634 - PHP - ADOdbもわかりやすくて良いです。
結果として、検索系はストアドプロシージャでDBに入れ込んじゃって、PHP側では"BEGIN 〜 END"するだけ良くなるのでコードも分離できてスッキリ。
最初PEAR::MDB2を試していたのですが、普通にインストールして使おうと思ってもDBに接続しないっつー状況に。。
少しネットで調べてみたらMDB2_Driver_OCI8がかなりのバグ持ちらしく使いものにならんと判断しましたw
PEAR公式サイトのコメントでPATCHとか公開されてるので根気ある方は頑張ってみてください。
僕は納期優先だったので諦めました(;^ω^)
次にPropelを調べました。PHPフレームワークにsymfony使ってるので内蔵されてるPropel使えたら
楽そうだなと思ってましたが、ストアドプロシージャはMSSQLしか対応してませんとの表記があって却下しました。
PDOもREF CURSOR使えないから却下。早いしPHP標準だから楽なんですけどね。
たぶん上手いことやれば、どの抽象レイヤーでも出来ると思うんですがイレギュラーな事せずに
すんなり出来たのがADOdbでした。簡単だしオススメです!