【问题标题】:Isn't Controller and Model is the same in php MVCphp MVC中的Controller和Model是否相同
【发布时间】:2017-09-06 07:34:36
【问题描述】:

我正在学习 PHP 编程并遇到了 MVC(模型视图和控制器)。谁能解释更多关于模型和控制器的信息?

在下面的堆栈溢出问题What is the best definition of MVC?中,有一个答案是Model负责数据库。但是不就是controller哪个进程和使用数据库吗?

【问题讨论】:

  • Controller 是您的房地产经纪人,models 是您感兴趣的房屋,view 是经纪人为您提供的选择性游览。代理将收集可用房屋的清单,然后准备一个最适合他们的视图。显然,基于这些理由,没有人可以说房地产经纪人和房子是一回事。

标签: php model-view-controller


【解决方案1】:

不,它们不一样。模型包含您的应用可以“做”的所有事情。

  • 描述数据结构的类?模型的一部分。
  • 创建新用户的功能/方法/服务?模型的一部分。
  • 发送电子邮件通知?模型的一部分。
  • 复杂的数据库查询?模型的一部分。
  • 还有其他的吗?模型的一部分。

Controller 是“模型与外部世界之间的接口”。控制器从外部世界获取输入,如 HTTP 请求、命令行输入或事件总线上的事件,并根据该输入决定在模型中应该触发什么动作,也许用什么样的视图来响应.对于不同的场景(Web 服务器、命令行界面、cron 作业),您可能有不同的控制器,它们使这些不同的场景适应底层模型中的操作。

【讨论】:

    【解决方案2】:

    对于 PHP 中的 MVC,我发现 Codeigniter 非常有用!尽管它与其他语言中的 MVC 略有不同...... 从他们的定义来看:

    • Model 代表您的数据结构。通常,您的模型类将包含帮助您在数据库中检索、插入和更新信息的函数。
    • 视图是呈现给用户的信息。视图通常是网页,但在 CodeIgniter 中,视图也可以是页眉或页脚等页面片段。它也可以是 RSS 页面,或任何其他类型的“页面”。
    • 控制器充当模型、视图以及处理 HTTP 请求和生成网页所需的任何其他资源之间的中介。

    https://codeigniter.com/user_guide/overview/mvc.html

    【讨论】:

    • 那不是 MVC。你写的 CodeIgniter 的描述,被宣传为 MVC ......它不是。
    【解决方案3】:

    不,控制器和模型在 MVC 架构中是不一样的。该模型用于跟踪所有业务数据。 控制器告诉它做什么,模型知道怎么做

    控制器编排应用程序。控制器接收来自 外部世界(通常是用户输入),与模型交互,并显示 为用户提供适当的视图。

    模型负责维护应用程序的状态。模型不仅仅是数据;它执行适用于的所有业务规则 那个数据。

    要了解这些概念如何组合在一起,请参阅 下图:

    【讨论】:

      猜你喜欢
      • 2011-09-19
      • 2012-02-10
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多