はてなダイアリー – Amethyst製作日記

一つ考えられる方法として、オブジェクト管理クラスを用意して、そのオブジェクト管理クラスは管理対象のオブジェクトをシリアライズしてローカルにファイルとして保存、読み出しを行えるようにするとか。

まぁ、ファイル読み書きのオーバーヘッドが発生しちゃうけど、現実的な実装方法なのかも知れない。

コレを見てPHPで手軽にオブジェクトの永続化ができたらいいなと思ったのでちょっと作ってみました。

早い話が設定やDBがいらないDB_DataObjectといったものです。

require_once("StoredObject.php");

class Book {
    var $name;
    var $price;
    var $releaseDate;
}

$book =& new Book();
$book->name = "Effective Java";
$book->price = "1000";
$book->releaseDate = "2004/12/01";

$storedBook =& StoredObject::factory("Book");
$storedBook->store($book);

クラス名でStoredObjectのfactoryを動かして、store()でオブジェクトを保存します。

require_once("StoredObject.php");

$book =& StoredObject::factory("Book");
$book->get("name", "Effective Java");
var_dump($book);

DataObjectライクに永続化していたオブジェクトを取得。

仕組みは簡単でクラス名で作成したディレクトリに1オブジェクトに対応する1ファイルを作ってserialize()保存しているだけです。取得するところはオブジェクトが増えると半端じゃなく遅くなると思いますが、何のインストールも設定ファイルもいらないのでプロトタイプの作成にはいいかもしれないです。

StoredObject-0.1.tgz

Comments


Option