- 2006-01-13 (金)
昨日の晩に CBL ActiveRecord の 20060112版をリリースしました。
今回のバージョンで PHP5.1 にも対応しました。引き続き PHP5.0 にも対応しています。PHP5.0 と PHP5.1 では PDO の定数が PDO_xxx (PHP5.0) と PDO::xxx (PHP5.1) と異なっていたので、PHP_VERSION を version_compare() することにより、PHP5.1 の場合 define( 'PHP_xxx', PDO::xxx ) と定義して、対応させました。
また、CBL_ActiveRecord クラスから派生させて CBL_ActiveRoot というクラスを作りました。これはクラス名のごとくルートオブジェクトをイメージしたものです。PHP の場合 Ruby と異なって、クラスのスタティックなメンバ関数をクラス名に応じて処理を変える、というようなことができません。それで、例えば
class ToDo extends CBL_ActiveRecord {}といったことができず、$todo_list = ToDO::find_all();
class ToDo extends CBL_ActiveRecord {}としていました。$todo = new Todo();
$todo_list = $todo->find_all();
そこで、CBL_ActiveRoot を使用すると
class ToDo extends CBL_ActiveRecord {}というふうに、一気に $todo_list や $user_list を取得できるようになります。つまり、データベースに定義されたテーブルを表すオブジェクトを、ルートオブジェクトの小オブジェクトとして取得することができ、それに対して find_all() を呼び出すことによって、レコード一覧が取得できるようになります。
class User extends CBL_ActiveRecord {}$root = new CBL_ActiveRoot();
$todo_list = $root->todo->find_all();
$user_list = $root->user->find_all();
VBA などでオブジェクト階層というのがあったように、RDBMS を使用してオブジェクト階層のようなものを実現するのに CBL_ActiveRoot が使えると思います。