手軽なPHPオブジェクト永続化のためのクラスStoredObjectを0.2にしました。
1オブジェクト=1ファイルだと10,000件の検索に5秒ぐらいかかるので1クラス=1ファイルにしました。(1オブジェクト=1行)
DataObjectよりシンプルにするためにfactoryを廃止。
下記は永続化のサンプル。
StoredObject#store()で保存。(保存先はデフォルトだと実行したディレクトリ。コンストラクタの第二パラメータでディレクトリ指定できます)
require_once("StoredObject.php");
class Book {
var $name;
var $price;
var $releaseDate;
}
$storedObject =& new StoredObject("Book");
$book =& new Book();
$book->name = "軽快なJava";
$book->price = "1000";
$book->releaseDate = "2004/12/01";
$storedObject->store($book);
$book->name = "Effective C++";
$book->price = "2000";
$book->releaseDate = "2004/12/02";
$storedObject->store($book);
$book->name = "Programming Perl";
$book->price = "3000";
$book->releaseDate = "2004/12/03";
$storedObject->store($book);
StoreObject#get()で取ってきます。
require_once("StoredObject.php");
class Book {
var $name;
var $price;
var $releaseDate;
}
$storedObject =& new StoredObject("Book");
$book1 =& $storedObject->get("name", "軽快なJava");
var_dump($book1);
$book2 =& $storedObject->get("name", "Effective C++");
var_dump($book2);
$book3 =& $storedObject->get("name", "Programming Perl");
var_dump($book3);
実行結果はこんな感じです。_StoredObject_hashというのはStoreObjectが勝手に割り当てているハッシュ値です。
object(book)(4) {
["name"]=>
string(10) "軽快なJava"
["price"]=>
string(4) "1000"
["releaseDate"]=>
string(10) "2004/12/01"
["_StoredObject_hash"]=>
string(32) "8141cda9579ef74e052390de23770469"
}
object(book)(4) {
["name"]=>
string(13) "Effective C++"
["price"]=>
string(4) "2000"
["releaseDate"]=>
string(10) "2004/12/02"
["_StoredObject_hash"]=>
string(32) "2d37647c506ed9a84f3e2966afcf40e0"
}
object(book)(4) {
["name"]=>
string(16) "Programming Perl"
["price"]=>
string(4) "3000"
["releaseDate"]=>
string(10) "2004/12/03"
["_StoredObject_hash"]=>
string(32) "ec905200936acd1ae7ecdcc6e7a4099d"
}
find()メソッドや正規表現での検索を追加予定です。