我一直在学习模型-视图-控制器范例(“MVC”),但我很困惑,因为有些教程与其他教程相矛盾。
我目前对这个过程的理解是这样的:
路由器/调度器/前端控制器:
- 尽管“MVC”名称中没有具体提及,但 Router 仍然是一个非常重要的部分。正是在这里,请求从原始 URL 转换到特定的控制器。例如,routing向 www.StackUnderflow.com/question/123 提出请求“问题”控制器的应用程序。
Model:
控制器:
This is the real workhorse of the application. In addition to relaying messages back and forth to the Model and the View, the Controller is also responsible for things like Authorization and application/"business" logicEdit: Per answer, business logic belongs in the Model.
-
在当前示例中,控制器将负责:
- 确保用户已登录。
- 从 URL 确定 QuestionId。
- 确定要使用哪个视图。
- 发送 HTTP 代码并根据需要进行重定向。
- 询问Model获取数据,并将需要的数据存储在成员变量中。
View:
- 总的来说,视图是应用程序中最简单的部分。它在基本应用程序中主要由 HTML 模板组成。这些模板将具有占位符,用于将数据从控制器的成员变量插入到模板中:
e.g.
<html>
<head>
<title>
<?php $question->getTitle() ?>
</title>
</head>
<body>
<h1> <?php $question->getQuestionText(); ?> </h1>
<h2> Answers: </h2>
<div class="answerList">
<?php formatAnswerList($question->getAnswers()); ?>
</div>
</body>
</html>
- 视图还包含格式化数据以交付给用户的方法。例如,
formatAnswerList()
上面的方法将获取一系列答案,取自控制器,并循环遍历它们,同时调用类似的东西include $markupPath . "/formatAnswer.inc"
这将是一个答案容器的小模板。
问题:
- 这种 MVC 观点从根本上来说是准确的吗?
- 如果没有,请仔细解释哪些组件被放错了位置,它们实际上应该放在哪里,以及它们应该如何与其他组件正确交互(如果有的话)。
- 有多少个类来描述这个?在我的示例中,有四个对象 - 一个对象对应 MVC 的三个组件,另一个对象仅存储用于传输的相关数据。这是正常的吗,还是应该将一些结合起来。如果有,是哪些?
我认为这个描述对控制器的重视太多,而对模型的重视不够。理想情况下,模型是业务逻辑所在的位置。控制器实际上只是站点用户的一个界面,将控制路由到需要去的地方。看一下之前关于该主题的讨论:
理解 MVC:模型上的“Fat”和控制器上的“Skinny”是什么概念? https://stackoverflow.com/questions/3109715/understanding-mvc-whats-the-concept-of-fat-on-models-skinny-on-controllers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)