Php MVC/PDO:模型类中应该和不应该有什么?

Php MVC/PDO:模型类中应该和不应该有什么?,php,model-view-controller,pdo,Php,Model View Controller,Pdo,因此,我尝试在PHP中构建一个遵循MVC模式的应用程序 我很难建立我的模型课。以下是我迄今为止对该模型所做工作的简要总结: <?php class Database { private $_db; private $_host; private $_dbname; private $_user; public function __construct($host, $dbname, $user, $password = '') {

因此,我尝试在PHP中构建一个遵循MVC模式的应用程序

我很难建立我的模型课。以下是我迄今为止对该模型所做工作的简要总结:

<?php

class Database {


    private $_db;
    private $_host;
    private $_dbname;
    private $_user;

    public function __construct($host, $dbname, $user, $password = '') {

        if (empty($host) OR empty($dbname) OR empty($user)) {
            return false;
        }
        $this->_db = new PDO('mysql:host=' . $host . ';dbname=' . $dbname, $user, $password);
        $this->_host = $host;
        $this->_dbname = $dbname;
        $this->_user = $user;

    }

    // Checks if a given table already exists
    public function tableExists($table) {...}


}
所以问题是:当我想将数据库与一些控制器一起使用时,例如,当我想选择某个特定用户发送的所有消息时,我应该在数据库类中创建一个名为select的方法,还是应该在控制器的类中使用一个准备好的语句编写SQL查询

我对MVC模式非常陌生,所以我不知道我的模型类应该达到什么程度

我希望有人能给我答案

当我要选择所有发送的邮件时 对于特定用户,我是否应该在 数据库类,还是应该使用准备好的 控制器类中的语句

在本例中,将方法和任何SQL查询放在模型类Database中。此select方法可能会获取一些参数,这些参数将从查询中使用的控制器传递给它,如本例中的用户id

控制器仅用于处理输入,将输入转换为要由模型和/或视图处理的命令。它们本身不应该运行任何业务逻辑,比如SQL查询

当我要选择所有发送的邮件时 对于特定用户,我是否应该在 数据库类,还是应该使用准备好的 控制器类中的语句

在本例中,将方法和任何SQL查询放在模型类Database中。此select方法可能会获取一些参数,这些参数将从查询中使用的控制器传递给它,如本例中的用户id


控制器仅用于处理输入,将输入转换为要由模型和/或视图处理的命令。它们本身不应该运行任何业务逻辑,比如SQL查询。

这实际上取决于您如何编写代码。您可以在当前数据库类中编写所有“抽象”。大概是

public function select($table)
{
  $sql = "SELECT * FROM $table"
  //run and execute
}
在一些流行的框架中,数据库中的每个表都有自己的模型类,它使用这个数据库类

class User extends Database {
 ..
}
控制器将使用所需的模型类

class Home extends Controller {

function __construct() {
    parent::__construct();
}

function index() {
    $this->load->model('user');
 }
}
即使您没有使用任何框架,也很高兴看到框架如何实现这个mvc来帮助您入门


*本教程肯定会帮助您

这取决于您如何编写代码。您可以在当前数据库类中编写所有“抽象”。大概是

public function select($table)
{
  $sql = "SELECT * FROM $table"
  //run and execute
}
在一些流行的框架中,数据库中的每个表都有自己的模型类,它使用这个数据库类

class User extends Database {
 ..
}
控制器将使用所需的模型类

class Home extends Controller {

function __construct() {
    parent::__construct();
}

function index() {
    $this->load->model('user');
 }
}
即使您没有使用任何框架,也很高兴看到框架如何实现这个mvc来帮助您入门


*本教程将帮助您确定

您的所有业务逻辑查询,尤其是在理想情况下都应该进入模型。如果你喜欢的话,读一读,我看了一下,很有趣。非常感谢。尤其是您的所有业务逻辑查询在理想情况下都应该放在模型中。如果你喜欢的话,读一读,我看了一下,很有趣。非常感谢。但是,如果控制器已经处理了数据,为什么视图需要处理任何数据呢?视图不处理数据,只显示数据。控制器接收用户输入并将其交给模型,模型对其进行操作并将其交给视图,视图将显示它。但是,如果控制器已经进行了操作,视图为什么需要处理任何数据?视图不处理数据,它只显示数据。控制器接收用户输入并将其交给模型,模型对其进行操作并将其交给视图,视图显示它。