模型、视图和控制器
什么是 MVC?
无论何时创建应用程序,您都必须找到一种方法来组织代码,使其易于定位适当的文件并易于维护。与大多数 Web 框架一样,CodeIgniter 使用模型、视图、控制器 (MVC) 模式来组织文件。这将数据、演示文稿和应用程序中的流程作为独立的部分进行维护。
需要注意的是,关于每个元素的确切作用有很多观点,但这篇文档描述了我们对它的看法。如果您有不同的想法,您可以根据需要自由地修改每个部分的使用方式。
**模型**管理应用程序的数据,并帮助执行应用程序可能需要的任何特殊业务规则。
**视图**是简单的文件,几乎没有逻辑,用于向用户显示信息。
**控制器**充当粘合代码,在视图(或看到它的用户)和数据存储之间传递数据。
在最基本的情况下,控制器和模型只是具有特定工作的类。显然,它们不是您可以使用的唯一类类型,但它们构成了此框架设计使用方式的核心。它们甚至在 **app** 目录中为其存储指定了目录,尽管您可以根据需要将它们存储在任何地方,只要它们命名空间正确。我们将在下面更详细地讨论这一点。
让我们仔细看看这三个主要组件中的每一个。
组件
视图
视图是最简单的文件,通常是包含少量 PHP 代码的 HTML 文件。PHP 代码应该非常简单,通常只是显示变量的内容,或者循环遍历一些项目并将它们的信息显示在表格中。
视图从控制器获取要显示的数据,控制器将数据作为变量传递给视图,这些变量可以通过简单的 echo
调用来显示。您也可以在一个视图中显示其他视图,这使得在每个页面上显示一个通用的页眉或页脚变得非常简单。
视图通常存储在 app/Views 目录中,但如果未进行组织,它们很快就会变得难以管理。CodeIgniter 不强制执行任何类型的组织,但一个好的经验法则是为每个控制器在 Views 目录中创建一个新目录。然后,根据方法名称命名视图。这使得它们以后很容易找到。例如,用户的个人资料可能显示在名为 User
的控制器中,以及名为 profile
的方法中。您可以将此方法的视图文件存储在 app/Views/user/profile.php 中。
这种类型的组织作为一种基础习惯非常有效。有时您可能需要以不同的方式进行组织。这不是问题。只要 CodeIgniter 可以找到文件,它就可以显示它。
模型
模型的工作是维护应用程序中的一种数据类型。这可能是用户、博客文章、交易等。在这种情况下,模型的工作有两个部分:在从数据库中提取数据或将数据放入数据库时,对数据执行业务规则;以及处理从数据库中实际保存和检索数据。
对于许多开发人员来说,困惑之处在于确定执行哪些业务规则。它只是意味着对数据的任何限制或要求都由模型处理。这可能包括在将原始数据保存到数据库之前对其进行规范化以满足公司标准,或者在将数据传递给控制器之前以特定方式格式化列。通过将这些业务需求保留在模型中,您将不会在多个控制器中重复代码,并且不会意外地错过更新某个区域。
模型通常存储在 app/Models 中,但它们可以使用命名空间以您需要的任何方式进行分组。
控制器
控制器有几个不同的角色。最明显的是,它们接收来自用户的输入,然后确定如何处理它。这通常涉及将数据传递给模型以保存它,或者从模型请求数据,然后将数据传递给视图以显示。这也包括在需要时加载其他实用程序类来处理模型范围之外的专门任务。
控制器的另一个职责是处理与 HTTP 请求相关的所有内容 - 重定向、身份验证、网络安全、编码等。简而言之,控制器是您确保人们被允许在那里,并且他们以可以使用的格式获得所需数据的场所。
控制器通常存储在 app/Controllers 中,但它们可以使用命名空间以您需要的任何方式进行分组。