DB_DataObject

DB_DataObjectを使おうと思ったんだけど、情報が少なそうだし少ない情報で「かゆいところに手が届かない」とか書いてあったら使う気なくなってきた…。


待ってたら改善されるんだろうか。


# しばし作業

ダイコンを使って継承を使わない書き方をしたら、DBの接続とかの共有設定はどこに書いたらいいんだろう。
DAOクラスを2コ作ったらその設定ファイル2コに接続用文字列をそれぞれ書く?


根本的な勉強不足。。


# しばし思案

これがMapleで言うところのグローバルフィルタだったりモジュールフィルタだったりで、AOPでいうところの横断的関心事なのかな。

でも同じページでもログインしているユーザだけDBにアクセスしたい場合とかは、コンテナに登録されたビジネスロジックがDBに繋ぎたいわけで、コンテナの中のコンポーネントに対してグループ指定がしたいような。


散々考えた末、結局ビジネスロジッククラスのコンストラクタでコンテナからDB接続用クラスを呼び出せってことなんでしょうか。。
そうするとDB接続用クラスの設定ファイルに接続用文字列を書いて、特に問題ない感じがするけれど、DAOクラスのそれぞれのコンストラクタにコンテナからDB接続クラスを呼び出すのは違和感が。
継承によってコードの重複を防ぐか、DIコンテナによってコードの重複を防ぐか、、


たいしたことないんだけど

class BusinessLogic extends DBconnect
{
    function BusinessLogic(){
        parent::connect();
    }
}

とするか

class BusinessLogic
{
    function BusinessLogic(){
        $container = & DIContainerFactory::getContainer();
        $DBconnect = & $container->getComponent('DBconnect');
        $DBconnect->connect();
    }
}

とするか

class BusinessLogic
{
    function BusinessLogic(){
        DBconnect::connect();
    }
}

とするか。。


継承の方がすっきりするような。
なんか使い方間違ってる感が。。


サイト全体でDB接続が前提となってるならコンポーネント登録時にコンストラクタで接続したら簡単か。
うーん。