MVC:这些模型应该是静态的吗?

时间:2013-03-25 00:33:18

标签: php model-view-controller

我在使用MVC模式时遇到问题;我创建了多个模型,我正在使用它们中的每一个来处理分组任务(连接,数据库,等等)。

问题是,在创建基本模型之后,我最终得到了这样的代码(在控制器中)。

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...
    }

}

我一直在(几乎)我的类中的所有函数中创建模型实例,尽管使它们静态似乎绝对正常。

I read this questions about when to use static methods,在应用“经验法则”后,似乎所有这些模型都应该是静态的,这是MVC模式中的一个不好的做法吗?

如果我将这些模型设为静态,我可能会得到类似的结果:

class Controller 
{
    function doStuffz() 
    {

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

}

这实际上对我来说更有意义,它看起来更清洁,更短。

1 个答案:

答案 0 :(得分:0)

DBModel,HTMLModel实际上不是模型,它们是服务。

使用静态方式很方便,但它有缺点:全局范围,严格依赖,难以测试。