Daomancy - Simplematic O/R Mapper for PHP
ダウンロード
こちらから。現在の最新バージョンは0.7.0です。
概要
Daomancyは、一目でわかるインタフェースで、DBからデータオブジェクトを生成するデータアクセスフレームワークなのです。
「だおまんしい」と読めばよさそうです。
とりあえず下のソースコードを見てください。
$page = Daomancy::_($dbh)
->from('PageDAO' , 'p')
->join('CategoryDAO' , 'c')
->on('p.category_id = c.category_id')
->where('p.name LIKE ?' , 'Daomancy%')
->and_('c.category_id = ?' , '1')
->fetch();
こういうことをします。
上の例では、DB上のpageテーブルとcategoryテーブルからそれぞれPageDAOオブジェクトとCategoryDAOオブジェクトを生成しているのです。
見てのとおり、SQLをある程度知っていれば誰にでもすぐにわかります。
オブジェクト指向を導入してもっともうれしいのはデータアクセス処理です。しかし、実現方法をいろいろ考えてみると難しいです。
Daomancyでは、オブジェクトの単位をばっさりとテーブル別に分けてしまいました。その代わり、上の例のようにオブジェクトを結合して生成できます。
特徴
クラス一覧
-
Daomancy
SELECT文を生成し実行して、指定したDaomancyRecordにマッピングします。
-
DaomancyRecord
各テーブルごとのアクティブレコードオブジェクトの基底クラスです。
列名と同じ名前のpublicフィールドを持っています。
テーブルひとつが対象であればこれ単独で動きます。
これを継承し、テーブル名、列名、プライマリキーの定義を記述すればとりあえず動きますが、さらにメソッドを追加することができます。
-
DaomancyRecordRack
JOINして取得したDaomancyRecordを行ごとに保持します。
-
Fromancy
FROM句を生成するためにDaomancyが内部で使用しています。
-
Wheremancy
WHERE句を生成するためにDaomancyが内部で使用しています。
また、これを直接使用することでIN句やNOT NULL句、カッコ()を使用した複雑な条件などを生成することができます。
-
WheremancyLiteral
プレースホルダ「?」を使用せず直接WHERE句を記述するときに使います。
-
MultiWrapper
本体とは特に関係ありませんが、ついでに入っています。配列やオブジェクトなどあらゆるものの各要素を、形式を保持したままhtmlspecialcharsします。
Daomancyが生成したオブジェクトをHTML表示に使用する場合は役にたつかもしれません。
ライセンス
Daomancyは、Apache Softwere Licenseで配布します。
バグ、要望など
プロジェクトページのトラッキングかフォーラムにお願いします。
リリースノート
-
2008/03/14 バージョン 0.7.0
一行ずつ取得できるようになった。
-
2008/02/18 バージョン 0.6.0
ベータ版リリース