2007年11月12日(月曜日)

Dyna 再チャレンジ

カテゴリー: - Ryuji @ 17時16分52秒

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再チャレンジ」です(^^;


RSS feed for comments on this post.

ƤˤϡޤȤդƤޤ

Ȥ

ʤߥȤդ뤳ȤϽޤ

10 queries. 0.011 sec.
Powered by WordPress Module based on WordPress ME & WordPress

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.