CodeIgniter4 模型,视图和控制器
当创建一个应用的时候,我们需要找到一种组织代码的方法,使其易于找到正确的文件并且易于维护。和很多 Web 框架类似, CodeIgnite 框架也使用了模型、视图、控制器结构,即 MVC 模式,来组织接着代码文件。这种方式可以将数据,展示部分和流程部分分别作为单独的部分存放在我们的应用中。需要注意的是,对于每一个元素的所担任的角色会有很多种看法,本文描述了我们对此的看法。如果你有不同的看法,则可以根据需要随意修改使用方式。
模型 主要用来管理应用的数据, 根据应用的特殊业务规则获取数据。
视图 是一个没有或者少量逻辑的简单的文件, 它只负责将数据展示给用户。
控制器 主要承担了胶水代码的功能, 它主要在视图层和数据存储之间来回的处理并整合数据。
在最简单的情况下,控制器和模型只是一个完成特定工作的类。他们虽然不是你可以使用的唯一类的类型,但他们是构成整个框架的核心。你也可以将控制器和模型文件存储在任何你需要的位置,但是 CodeIgnite 框架在 /app 目录中为我们指定了存储目录。我们将在之后进行详细讨论。
下面我们就来看一下这三个主要组成部分。
组成
视图
视图是最简单的文件,一个视图文件通常是一个HTML文件加入少量的PHP代码。视图中的PHP代码应该尽可能的简单,一般只是显示一个变量内容,或者通过循环语句将数据输出在表格中展示出来。
视图从控制器中获取数据并展示——控制器将数据发送给视图,视图通过简单的 echo
调用将数据展示出来。你也可以在一个视图中插入展示其他视图,这样可以很简单的在每个页面上展示出公共的页眉和页脚。
视图文件通常存放在 /app/Views 目录下,如果在创建文件时不按照一定的规则创建的话,会显得我们的代码杂乱无章。 CodeIgnite 框架虽然没有规定任何的规则,但通过经验我们规定在 Views 目录下创建一个新的目录对应每个控制器。然后通过方法名来命名视图。这样就会使我们之后查找起来更加容易。例如:用户配置
可能会显示在一个名为 User
的控制器中,并且方法名称为 profile
,你就可以将该视图文件保存在 /app/Views/User/Profile.php 这个路径下,并这样命名。
这种良好的组织代码方式建议养成一个习惯。可能有些时候,你有一些其他需求需要以其他方式来组织代码,没关系,只要CodeIgnite框架可以找到这个文件,这个视图就会被显示。
模型
对于许多开发人员而言,在确定执行哪些业务规则时会困惑。模型的主要任务是给应用维护单一类型的数据。比如:用户,博客内容,交易信息等。所以,模型的工作有以下两种,对数据进行采集或者放入数据库中执行业务规则;检索数据并将数据库中的数据读取出来。也就是进行数据的增删改查的操作。
数据的任何限制和要求都由模型层承担,包括在保存数据前将原始数据初始化,或者在数据传给控制器前将数据格式化。这样可以保证你可以不用在多个控制器中出现重复代码,或者出错。
模型类型的文件保存在 /app/Models 这个目录下,虽然他们也可以使用一个命名空间分组,但是还是建议你将模型文件放在这个目录下。
控制器
控制器主要承担了几个不同的角色。最常见的就是他们会接收用户的请求,然后判断这个请求应该执行什么样的操作。而这一过程通常会涉及到将数据发送给模型层保存,或者去请求模型层的数据返回给视图。控制器也会用来加载其他应用程序请求的除模型参与的任务。
控制器的林外的任务就是用来处理和 HTTP 请求相关的所有事情——重定向、认证, Web 安全,编码等。总之,控制器是你的应用程序的入口,通过控制器访问你的应用的用户才可以到达指定的地方并获取他们想要的数据使用格式。
控制器通常会保存在 /app/Controllers 这个路径下, 虽然你也可以使用命名空间分组,但是还是建议你将控制器存放在该目录下。