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

Php MVC:这些模型应该是静态的吗?,php,model-view-controller,Php,Model View Controller,我在使用MVC模式时遇到问题;我创建了多个模型,我使用每个模型来处理分组任务连接、数据库等 问题是,在创建了基本模型之后,我在控制器中得到了这样的代码 class Controller { function doStuffz() { $accounts = new AccountsModel(); $DB = new DBModel(); $HTML = new HTMLModel(); //

我在使用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...
    }

}
我已经在我的类中的几乎所有函数中创建了模型实例,尽管将它们设置为静态似乎是绝对好的

在应用了经验法则之后,似乎所有这些模型都应该是静态的,这在MVC模式中是一种糟糕的做法吗

如果我让这些模型是静态的,我可能会得到这样的结果:

class Controller 
{
    function doStuffz() 
    {

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

}

这对我来说更有意义,而且它看起来更干净、更短。

DBModel、HTMLModel实际上不是模型,而是服务


使用静态方式很方便,但也有缺点:全局范围、紧密依赖、难以测试。

它们与模型有什么区别?我的意思是,我见过以模型命名的类,它们的功能与DBModelrunning查询完全相同。@AzizAG,好的。你抓住我了:^。我不知道如何真正区分服务和型号。我喜欢这样。无论类是服务还是模型,它都应该是静态的。很公平。所以,你会得到你的缺点。关于这是一个模型还是一个服务?问题:这是一个概念性的问题,而不是仅仅通过查看代码就可以回答的问题。服务是为您做事情的类,而模型是存储关于和/或表示特定类型的数据的类。通常,数据库表到模型类几乎是一对一的映射。