gpt4 book ai didi

php - MVC::哪个去哪里?

转载 作者:行者123 更新时间:2023-12-02 07:40:15 25 4
gpt4 key购买 nike

在过去的 2 年里,我是一名平面 php 程序员。现在我想转向 MVC 架构,所以我正在使用 codeigniter,它看起来很容易上手。在 codeigniter 中进行开发时,我想了解一些最佳实践。

我有一个名为 buildingcontroller,一个名为 building_datamodel 和一个名为 building_view 的 View 。现在我想通过检查很多条件来显示建筑物列表。我在平面 PHP 中执行以下操作

  1. 从数据库中获取建筑物列表
  2. 根据特定条件 A、B、C 拆分结果
  3. section - Asection -Bsection-c中将结果显示为HTML输出。

现在在 MVC 中我正在做以下事情

  1. 获取building_data数据库中的建筑列表(model)
  2. building_data 的结果存储在 building Controller 的 $data 数组中
  3. 根据 building_view 中的条件 A、B、C 拆分结果并输出 HTML(我可以对数据进行基于条件的分类吗(不使用 mysql 查询)在 View 中?!我的实际问题)

在不违反 MVC 架构规则的情况下,我在这里做的事情是否正确?

最佳答案

MVC 是一种设计模式。不是架构。

但是,如果您希望学习最佳实践 或 MVC,那么 CodeIgniter 是错误的选择。它充满了糟糕和过时的做法(PHP4 代码片段、全局状态和许多其他问题),并且没有实现任何接近 MVC 模式的东西。它更像是 PHP 的糟糕 Rails 克隆。

View 应该是对象,而不是愚蠢的模板。您的 Controller 应该告诉模型层用户选择了哪个建筑物,然后 View 获取有关当前建筑物的详细信息并决定如何表示所有内容。

在正确的 MVC 实现中, View 是包含表示逻辑的实例。他们从模型层获取信息,然后选择使用哪些模板来呈现响应,甚至选择是否需要 HTML 响应。也许用户实际上请求了 JSON 或 XML 格式的数据。或者,该 View 需要发送的唯一响应可能是 HTTP header 。

您还应该知道您不能在 Web 应用程序中实现经典的 MVC 模式(或者至少它非常困难并且需要使用套接字和持久模型)。相反,我们使用受 MVC 启发的模式。它们之间的主要区别在于 View 从 Model 层获取信息的方式。

  • 在 MVP 和 MVVM 模式中, View 是被动的,并通过类似 Controller 的结构(从角度来看,呈现器或 View 模型)接收数据。
  • 在 Model2 MVC 和 HMVC 模式中, View 是事件的,它直接从模型层请求信息。

还有第三组:类似 Rails 的实现。它将模型层替换为基于 ActiveRecord 的 ORM 集合,假装 View 是一个模板,而“ Controller ”是展示者和 View 职责的组合。

关于php - MVC::哪个去哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11876730/

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