在MVC结构中工作时,DAO是否与Model相同?


Is DAO the same as Model when working in MVC structure?

在学校的后端课程中,我们逐渐了解了如何使用MVC结构进行PHP开发。

我们的基本'模板'包括一个index.php(它有到页面&(控制器中的函数)、控制器文件夹(包含控制器)、视图文件夹和一个DAO文件夹,其中包含一个用于对数据库和相对于数据库中每个表的文件进行一般访问的DAO文件夹。

在这个结构中,我有控制器和视图,但我想知道为什么我们从不使用模型,我们甚至从未被告知它…DAO应该是我的模型文件夹吗?

下面是一个从产品表中获取值的DAO代码示例,只是为了更清楚地说明我所说的DAO是什么意思。

public function selectById($id) {
    $sql = "SELECT * FROM `products` WHERE `id` = :id";
    $stmt = $this->pdo->prepare($sql);
    $stmt->bindValue(':id', $id);
    $stmt->execute();
    return $stmt->fetch(PDO::FETCH_ASSOC);
}

不,DAO不是模型。DAO是模型的部分。

模型不是一个单一的东西。模型基本上是整个应用程序的核心;它是应用程序。模型包含构成应用程序所做的一切。它包括数据库、数据库访问层、业务对象、业务逻辑、辅助服务……一切使你的应用程序独一无二的

View是将这个核心应用程序呈现给外部的东西,允许人们看到你的应用程序所做的事情并与之交互。对于不同的使用场景,可能有几个不同的视图。控制器是协调外部世界、视图和核心模型如何协同工作的粘合剂。