如何在php中使用MVC而不使用某些框架

如何在php中使用MVC而不使用某些框架,php,oop,model-view-controller,Php,Oop,Model View Controller,我对模型-视图-控制器模式有一些(可能是基本的)知识,我想使用它创建一个站点。但我发现如何真正实现这一点有点困惑。我被细节难住了 假设我有一个网站,每个用户都有一些待办事项列表。你将如何处理这个问题? 你会创建什么类?哪个类将输出HTML,哪个类将服务器作为控制器,它将如何与视图通信以生成输出?等等 抱歉,如果这看起来很愚蠢,我想这一定有点容易,但我被卡住了。虽然你的问题有点太宽泛,但我想我可以提供一些帮助 在开始使用框架时,我遇到的第一个问题是:我应该使用哪个框架(如果有的话)?在您的情况下,

我对模型-视图-控制器模式有一些(可能是基本的)知识,我想使用它创建一个站点。但我发现如何真正实现这一点有点困惑。我被细节难住了

假设我有一个网站,每个用户都有一些待办事项列表。你将如何处理这个问题? 你会创建什么类?哪个类将输出HTML,哪个类将服务器作为控制器,它将如何与视图通信以生成输出?等等


抱歉,如果这看起来很愚蠢,我想这一定有点容易,但我被卡住了。

虽然你的问题有点太宽泛,但我想我可以提供一些帮助

在开始使用框架时,我遇到的第一个问题是:我应该使用哪个框架(如果有的话)?在您的情况下,我不会尝试在没有预制框架的情况下构建MVC网站。您将最终编写的大多数体系结构已经完成了几十次

DB抽象、登录系统等东西编写起来很枯燥。不妨使用一个已经具备这些功能的框架

我强烈推荐这本书:。它将引导您使用三种不同的PHP MVC框架构建一个简单的MVC网站。在本书的结尾,您将对每个框架有足够的经验,以便您可以选择您最喜欢的框架


或者,如果您想编写自己的框架,以便了解它是如何完成的,我推荐TJHeuvel的答案。另一种选择是阅读现有框架的源代码,这样您就可以看到其他人是如何实现它的。

在没有现有框架的情况下,很有可能做到这一点,只需创建自己的框架即可。无论如何,这不是一项很难的任务

由于不是特定于应用程序,您的MVC框架必须执行以下操作:

  • 将所有流量重定向到中心页面,以便每个请求 处理正确
  • 从请求url中提取控制器和操作。(例如,对的请求,您必须将其转换为TaskController上的Add方法)
  • 加载控制器类(在我们的示例TaskController中)。也许使用自动加载
  • 在控制器上调用Add方法
  • 显示结果

  • 实现视图有多种方法,您可以模拟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>