1

MVC パターンの操作に問題があります。複数のモデルを作成しました。それぞれを使用して、グループ化されたタスク(接続、DBなど)を処理しています。

問題は、基本モデルを作成した後、このようなコード(コントローラー内)になってしまったことです。

class Controller 
{
    function doStuffz() 
    {
        $accounts = new AccountsModel();
        $DB       = new DBModel();
        $HTML     = new HTMLModel();
        //More models...

        $accountData = $accounts->getAccount($id);
        $DB->saveAccount($accountData);
        $HTML->display($accountData);
        //More code...
    }

}

クラスの (ほぼ) すべての関数内でモデルのインスタンスを作成してきましたが、それらを静的にすることはまったく問題ないように思えます。

いつ静的メソッドを使用するかについてのこの質問を読みました。「経験則」を適用した後、これらのモデルはすべて静的にする必要があるようですが、それは MVC パターンの悪い習慣ですか?

これらのモデルを静的にすると、おそらく次のようになります。

class Controller 
{
    function doStuffz() 
    {

        $accountData = AccountModel::getAccount($id);
        DBModel::saveAccount($accountData);
        HTMLModel::display($accountData);
        //More code...
    }

}

これは実際には私にとってより理にかなっています。また、よりクリーンで短く見えます。

4

1 に答える 1

0

DBModel、HTMLModel は実際にはモデルではなく、サービスです。

静的な方法を使用すると便利ですが、グローバル スコープ、厳密な依存関係、テストが難しいという欠点があります。

于 2013-03-25T01:44:55.763 に答える