gpt4 book ai didi

model-view-controller - MVC中 Controller 的工作是什么?

转载 作者:行者123 更新时间:2023-12-03 15:53:21 25 4
gpt4 key购买 nike

我正在尝试学习 MVC 架构。但我不明白为什么你需要一个 Controller 。请参阅下面的代码了解我的模型和 View 。

model.php 连接到数据库并检索帖子。 view.php 只会显示帖子。

模型.php

<?php
$db = mysql_connect("somehostname", "someuser", constant("somepassword"));
mysql_select_db("somedatabase", $db);

$result = mysql_query("SELECT post FROM posts WHERE postid='" . $_POST['id'] . "'");
$row = mysql_fetch_array($result);

$post = $row["post"];

mysql_close($db);
?>

View .php
<?php
require "model.php";
echo $post;
?>

我将浏览器位置设置为 http://whateverhost/view.php?id=5

这会加载 id 为 5 的帖子。我在这里不需要 Controller 。所以我很困惑为什么你需要一个 Controller ?

注:请参照上例进行说明。我不是编程极客,学习 CakePHP 等东西对我来说是压倒性的。

编辑:如果您可以将 controller.php 添加到上述代码中,那就太好了。这将有助于我理解 Controller 的角色以及它如何与模型和 View 进行通信。

最佳答案

您不需要 Controller ,因为您的示例很简单。
来自真实案例场景的示例:

假设您有一个 CAD 应用程序。 CAD 应用程序被安排为 MVC。你有:

  • 负责绘制当前模型并提供可点击实体的 View 。
  • 一个模型,它保留当前要表示的数据
  • Controller ,其作用是从 View 中获取事件,并将它们转换为适当的实体,以便修改模型。

  • 例如,用户单击一个正方形并将其删除。 Controller 将从 View 接收事件,创建一个表示命令的对象(通过命令模式),将其添加到撤销功能队列中并执行命令。然后该命令将修改模型,但是将 View 事件转换为修改模型的复杂机制的责任由 Controller 负责。

    当然你可以说,为什么 View 不创建 Command 对象呢?好吧,没有人禁止你这样做,但你最终会将表示逻辑与操作逻辑混合在一起。这与良好的设计背道而驰,尽管对于最琐碎的情况,您可以接受这种设计。例如,如果您的 CAD 应用程序允许您将对象列表同时显示为 3D 表示和实体列表,并且您可以从两者中删除,您会清楚地看到这两个 View 都实现了相同的逻辑来处理命令模式(糟糕的设计),或者它们只是将相同的消息传递给一个通用 Controller (良好的设计,MVC)。

    关于model-view-controller - MVC中 Controller 的工作是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2080532/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com