gpt4 book ai didi

php - PHP 中的 MVC——一般理解和具体问题

转载 作者:可可西里 更新时间:2023-10-31 23:05:27 24 4
gpt4 key购买 nike

我目前正在尝试了解 MVC 框架在 PHP 中的工作原理。因此,我创建了这个认为如何在 PHP 中实现 MVC 的基本草图:

Sketch of how MVC in PHP may be implemented

[我知道缺少一些步骤,例如Router 如何解析 route 以便知道要加载什么 ViewController,但是这些步骤相当以技术为基础,对于理解 PHP 中 MVC 的一般流程并不重要。]

我从这个 article series 中得出了我对 PHP 中 MVC 的理解.然而,我认为这种结构将不同于人们在谈论 PHP 中的 MVC 时想到的大多数结构,因为这个 article (这篇文章基本上指出,不仅 Controller 而且 View 确实与 Model 通信)。

我现在想问你的是几个问题:

  1. 这通常是在 PHP 中实现 MVC 的正确方式吗?
  2. 如何向该方法添加登录/注销系统?这样, 登录的用户将始终看到登录 View ,而 登录的用户可以看到不同的 View ? (我知道登录系统是如何工作的,但我不知道在哪里将它放在 MVC 中,所以我不必多次插入代码,例如在每个 Controller 中。 )
  3. 如果我的应用程序包含多个始终加载的元素(比如用户栏 [带有用户名、设置链接等]、导航和内容容器)怎么办?如何将这些元素组合成最终 View ? (我想到的唯一想法是分别在每个 View 中组装最终 View ,但这意味着我必须在每个 View 中多次插入它的代码,这忽略了重点MVC,不是吗?)
  4. 如果我想在我的应用程序中使用 AJAX 怎么办?我的想法是也通过框架发送 ajax 请求,同时只访问为 ajax 制作的 Controller 和 View ?换句话说,AjaxViews 只返回例如json 对象AjaxControllers 是否总是期望验证代码来证明这些 ajax 调用是合法的?

我知道已经有几十个关于 PHP 中的 MVC 的问题,直到现在我已经安静地阅读了很多文章,但我认为只有阅读并不能让我彻底理解MVC

此外,在阅读了上面链接的文章之后,我不再确定我在网上找到的其他关于 MVC 的文章是否与上面的文章以同样的方式解释了 MVC。因为如果他们不这样做,我会在阅读有关两个多个 不同方法的同时尝试理解一个 框架。

非常感谢您花时间回答我的问题!

-- --- --- 更新 --- --- --

根据下面的回答,我更改了我的 MVC 草图。以防万一有人找到此链接并想了解更多信息。

enter image description here

最佳答案

让我先回答你的问题,然后再发表我的看法。

  1. 没有正确 的编写 MVC 的方法。风格和变化如此之多,在谈论 web MVC 时甚至会成倍增加。
  2. 关于登录和注销。我认为最健壮的系统是基于角色的访问控制与访问控制列表相结合,请参阅 How can I implement an Access Control List in my Web MVC application? .
  3. 通常有两种方法,要么 Controller 和 View 之间的比例为 1:1,然后在 Controller 完成后,您的引导脚本调用同名 View (LoginController、LoginView),或者您的 Controller 返回 View 名称以及操作和参数,由 Bootstrap 调用。然后 View 选择一个模板,该模板可以包含其他子模板(如用户栏或页脚)。
  4. 在这种情况下,您的 View 需要能够根据 Accept: HTTP header 选择不同的模板(并发送类似 Accept: application/json 的内容在您的 AJAX 请求中)。然后,您的 View 会返回 JSON 模板而不是 HTML 模板。

你的草图有什么问题吗?

您的模型不仅仅是通往数据库的门户,它还是所有逻辑发生的地方。所有的计算。请参阅另一个解释 How should a model be structured in MVC? 的优秀答案.

MVC 的思想是将您的应用程序简单地分为三层:输入( Controller )、逻辑(模型)和输出( View )。这是为了扩展 PHP 的通常工作方式(这是一个请求,给我一个响应,都在同一页面中)。

因此,实现细节可能会有所不同,概念才是最重要的。 “Web MVC”仅仅是良好的 OOP 实践和一些人在几十年前制定的命名约定的结果。

关于php - PHP 中的 MVC——一般理解和具体问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23579521/

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