cubsonでコードを生成すると、XoopsSimpleObjectを継承した、{TableName}Object クラスが作成されます。
例えば次のようなコードです。
class Foo_FooObject extends XoopsSimpleObject
{
function Foo_FooObject()
{
$this->initVar('foo_id', XOBJ_DTYPE_INT, 0, true);
$this->initVar('title', XOBJ_DTYPE_STRING, "", true, 255);
$this->initVar('note', XOBJ_DTYPE_TEXT, "", true);
}
}
コンストラクタでは、テーブルの各カラムについてinitVarメソッドを呼び出してでデータ型や、デフォルト値などを設定しています。
設定内容は、$mVarsにカラム名をキーとした連想配列で保存されます。
ほとんどのケースでは、cubsonが自動的に生成したコードで使えますが、時にはちょっと変えたい場合もあります。
変更したいときに変更できるようにするために、cubsonでは、DB情報を毎回取得して設定する方式でなく、事前にDB情報を元にコードを吐き出す形になってます。
ただ、よーく考えたら、initVarの実行結果は$mVarsに入るので、DB情報を取得してinitVarするようにしても問題なさそうです。
そんなわけで、DB情報を取得して、initVarしてくれるようなDynaXoopsSimpleObjectをちょっと試しに作成してます。
使い方としては
class Foo_FooObject extends DynaXoopsSimpleObject
{
}
で、先ほどのcubsonコードと同じようにinitVar。
noteカラムだけinitVarを変更したくなったら、
class Foo_FooObject extends DynaXoopsSimpleObject
{
function Foo_FooObject()
{
parent::DynaXoopsSimpleObject();
$this->initVar('note', XOBJ_DTYPE_TEXT, "Fooooo!!", true);
}
}
と書けばOK
というようなのを作りたいなと(^^;
えぇ、まだ作成途中です。。。。
ただ、オブジェクト生成のたびにDBから情報取得するんじゃムダなので、そこはキャッシュ必要だなぁとか、いろいろ考えてます。
これができたら、ActionFormやActionFilterでもできないかなぁと夢想しています
PS
# exFrameのDynaXXXXは、どうもなじめなかったんで、設定ファイルを使わないDynaXXXXをつくってみようかなと。そんなわけで「Dyna再チャレンジ」です(^^;