手軽な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()メソッドや正規表現での検索を追加予定です。

StoreObject-0.2.tgz

Comments


Option