如何在php中使用MVC而不使用某些框架
我对模型-视图-控制器模式有一些(可能是基本的)知识,我想使用它创建一个站点。但我发现如何真正实现这一点有点困惑。我被细节难住了 假设我有一个网站,每个用户都有一些待办事项列表。你将如何处理这个问题? 你会创建什么类?哪个类将输出HTML,哪个类将服务器作为控制器,它将如何与视图通信以生成输出?等等如何在php中使用MVC而不使用某些框架,php,oop,model-view-controller,Php,Oop,Model View Controller,我对模型-视图-控制器模式有一些(可能是基本的)知识,我想使用它创建一个站点。但我发现如何真正实现这一点有点困惑。我被细节难住了 假设我有一个网站,每个用户都有一些待办事项列表。你将如何处理这个问题? 你会创建什么类?哪个类将输出HTML,哪个类将服务器作为控制器,它将如何与视图通信以生成输出?等等 抱歉,如果这看起来很愚蠢,我想这一定有点容易,但我被卡住了。虽然你的问题有点太宽泛,但我想我可以提供一些帮助 在开始使用框架时,我遇到的第一个问题是:我应该使用哪个框架(如果有的话)?在您的情况下,
抱歉,如果这看起来很愚蠢,我想这一定有点容易,但我被卡住了。虽然你的问题有点太宽泛,但我想我可以提供一些帮助 在开始使用框架时,我遇到的第一个问题是:我应该使用哪个框架(如果有的话)?在您的情况下,我不会尝试在没有预制框架的情况下构建MVC网站。您将最终编写的大多数体系结构已经完成了几十次 DB抽象、登录系统等东西编写起来很枯燥。不妨使用一个已经具备这些功能的框架 我强烈推荐这本书:。它将引导您使用三种不同的PHP MVC框架构建一个简单的MVC网站。在本书的结尾,您将对每个框架有足够的经验,以便您可以选择您最喜欢的框架
或者,如果您想编写自己的框架,以便了解它是如何完成的,我推荐TJHeuvel的答案。另一种选择是阅读现有框架的源代码,这样您就可以看到其他人是如何实现它的。在没有现有框架的情况下,很有可能做到这一点,只需创建自己的框架即可。无论如何,这不是一项很难的任务 由于不是特定于应用程序,您的MVC框架必须执行以下操作:
实现视图有多种方法,您可以模拟ASPMVC,让每个控制器的操作返回一个
ActionResult
,其中有一个方法可以执行。然后,一个重载,ViewResult
将负责加载正确的视图,并将其包含在适当的ModelData
中。Kheldar的评论非常有意义。本教程实际上介绍了使用MVC模式创建微框架
虽然您需要添加自定义路由和某种路由引擎,但除此之外,这是开发您自己的MVC框架的一个非常好的初步步骤。以下是RASMUS LERDORF本人对您的问题的精确回答。
. 阅读以下交响乐网络简介: 记录如下: 在PHP中实现MVC并不是那么难,它更像是一项有纪律的任务,而不是一项困难的任务 a) 模型(可选,可以在PHP中使用数组)
b) 路由(index.php?)
c) 控制器
<?php
include "model\MyModel.php";
switch($action) {
case "add":
// here live the logic, information, call for services and such.
$model=....;
// and finally...
include "view\MyView.php";
break;
}
?>
d) 看法
请注意:
a) 视图应尽可能干净。认为视图可以由不关心php的web设计师创建
b) 视图始终是流程的最后一步。查看web总是不返回任何内容。不是待办事项列表站点,而是使用MVC模式的站点。按照通常的方式编写,然后将其传输到MVC。这样做几次,你很快就能从一个项目开始使用MVC模式。此时,它显示“欢迎使用PHP表示系统。这里我们列出了存储在该系统中的所有可用表示类别。”。有人有PHP创建者教程的完整备份吗?谢谢分享链接。这是一本非常适合初学者阅读的书。使用非框架创建的MVC博客示例的PHP源代码:
<?php
include "...";
// here we collects all the information, such post,get and path values
$action=...;
$param=....;
switch($controller) {
case "my": // www.myweb.com/my/action
include "controller\MyController.php"; // open the right controller.
break;
}
?>
<?php
include "model\MyModel.php";
switch($action) {
case "add":
// here live the logic, information, call for services and such.
$model=....;
// and finally...
include "view\MyView.php";
break;
}
?>
<html>
<body>
<?=$model->field;?>
</body>
<html>