模型、视图和控制器

什么是 MVC?

无论何时创建应用程序,都必须找到一种组织代码的方式,以便轻松定位正确的文件并简化维护。与大多数 Web 框架一样,CodeIgniter 使用模型、视图、控制器(MVC)模式来组织文件。这将数据、表示和应用程序流保持为单独的部分。

应该指出,对于每个元素的确切角色有许多不同看法,但本文档描述了我们的看法。如果你有不同的看法,你可以根据需要自由修改如何使用每个部分。

模型 管理应用程序的数据,并帮助执行应用程序可能需要的任何特殊业务规则。

视图 是简单的文件,几乎没有逻辑,用于向用户显示信息。

控制器 充当胶水代码,在视图(或看到它的用户)和数据存储之间来回组织数据。

最基本意义上,控制器和模型只是有特定任务的类。显然,它们不是你可以使用的唯一类型的类,但它们组成了此框架设计如何使用的核心。它们甚至在 app 目录中有指定的目录用于存储,尽管只要命名空间正确,你可以根据需要将它们存储在任何地方。我们将在下面更详细地讨论这一点。

让我们更仔细地看看这三个主要组件中的每个组件。

组件

视图

视图是最简单的文件,通常是包含很少 PHP 的 HTML。PHP 应该非常简单,通常只是显示变量的内容,或者循环一些项目并在表中显示它们的信息。

视图从控制器获取要显示的数据,控制器将其作为变量传递给视图,然后可以用简单的 echo 调用显示。你也可以在视图中显示其他视图,这样就可以很容易地在每个页面显示通用标头或页脚。

视图通常存储在 app/Views 中,但是如果不以某种方式组织,很快就会变得难以管理。CodeIgniter 不强制任何类型的组织,但是一个好的经验法则是在 Views 目录中为每个控制器创建一个新目录。然后,用方法名称命名视图。这样以后就很容易找到它们。例如,用户个人资料可能在名为 User 的控制器以及名为 profile 的方法中显示。你可以将此方法的视图文件存储在 app/Views/user/profile.php 中。

这种组织方式作为一种基本习惯非常有效。有时候你可能需要以不同的方式组织。这没关系。只要 CodeIgniter 可以找到文件,就可以显示它。

了解更多关于视图的信息

模型

模型的任务是为应用程序维护一种数据类型。这可能是用户、博客文章、事务等。在这种情况下,模型的工作有两部分:在从数据库中获取或放入数据库时,对数据执行业务规则;以及从数据库保存和检索数据。

对许多开发人员来说,确定执行了哪些业务规则会造成困惑。这简单意味着任何对数据的限制或要求都由模型处理。这可能包括在保存以满足公司标准之前规范化原始数据,或者以某种方式格式化列,然后才将其交给控制器。通过在模型中保留这些业务要求,你不会在多个控制器中重复代码,并且不会意外地遗漏更新某个区域。

模型通常存储在 app/Models 中,尽管它们可以使用命名空间按需要进行分组。

了解更多关于模型的信息

控制器

控制器有几个不同的角色。最明显的一点是它们从用户那里接收输入,然后确定对其进行何种处理。这通常涉及将数据传递给模型以保存它,或者从模型请求数据,然后将其传递给视图以显示。如果需要,这还包括加载其他实用程序类来处理模型范围之外的专门任务。

控制器的另一个职责是处理与 HTTP 请求相关的所有内容 - 重定向、身份验证、Web 安全、编码等。简而言之,控制器是确保人们被允许访问那里,并以他们可以使用的格式获取所需数据的地方。

控制器通常存储在 app/Controllers 中,尽管它们可以使用命名空间按需要分组。

了解更多关于控制器的信息