CodeIgniter Interview Questions and answers

CodeIgniter 面试问题

16 Mar 2025 | 10 分钟阅读

以下是 CodeIgniter 面试中常问的问题及答案列表。

1) 什么是 CodeIgniter?

CodeIgniter 是一个开源且功能强大的框架,用于开发基于 PHP 的 Web 应用程序。它松散地基于 MVC 模式,类似于 Cake PHP。CodeIgniter 包含库、简单的接口和访问这些库的逻辑结构、插件、辅助函数和其他一些资源,这些资源可以更轻松地解决 PHP 的复杂功能,同时保持高性能。它简化了 PHP 代码,并在更短的时间内生成了一个完全交互式、动态的网站。

更多详情。

2) CodeIgniter 最突出的特点是什么?

CodeIgniter 最突出的特点列表

  • 它是一个开源框架,可以免费使用。
  • 它非常轻量级。
  • 它基于模型-视图-控制器 (MVC) 模式。
  • 它具有功能完备的数据库类并支持多种平台。
  • 它是可扩展的。您可以通过使用自己的库和辅助函数轻松扩展系统。
  • 出色的文档。
更多详情。

3) 解释 CodeIgniter 的文件夹结构。

如果您下载并解压 CodeIgniter,您将获得以下文件结构/文件夹结构

应用

  • cache
  • 配置
  • 控制器
  • 核心 (core)
  • 错误 (errors)
  • 辅助函数 (helpers)
  • 钩子 (hooks)
  • language
  • 日志 (logs)
  • models
  • 第三方 (third-party)
  • views

system

  • 核心 (core)
  • 数据库
  • 字体 (fonts)
  • 辅助函数 (helpers)
  • language
Interview CodeIgniter 1
更多详情。

4) 解释 CodeIgniter 架构。

从技术角度来看,CodeIgniter 是动态实例化(轻量级)、松散耦合(组件之间很少相互依赖)和组件单一性(每个类和函数都狭隘地专注于其目的)。

CodeIgniter 中的数据流
Codelgniter Architecture 1
更多详情。

5) 解释 CodeIgniter 中的 MVC。

CodeIgniter 框架基于 MVC 模式。 MVC 是一种软件,它为您提供与表示视图分离的逻辑视图。 因此,网页包含最少的脚本。

  • 模型 (Model) - 控制器管理模型。它表示您的数据结构。模型类包含函数,通过这些函数您可以在数据库中插入、检索或更新信息。
  • 视图 (View) - 视图是呈现给用户的信息。它可以是一个网页或页面的部分,如页眉和页脚。
  • 控制器 (Controllers) - 控制器是模型和视图之间的中介,用于处理 HTTP 请求并生成网页。控制器收到的所有请求都传递给模型和视图以处理信息。
Model-View-Controller
更多详情。

6) 解释 CodeIgniter 中的模型。

模型的职责是处理所有数据逻辑和表示,并将数据加载到视图中。它存储在 `application/models` 文件夹中。

模型文件的基本结构
Codelginator Models 1

这里,ModelName 是您的模型文件的名称。请记住,类名的首字母必须大写,后面跟着其他小写字母,并且应与您的文件名相同。它继承了基础 CodeIgniter 模型,因此父模型文件的所有内置方法都将继承到新创建的文件中。

更多详情。

7) 如何在 CodeIgniter 中添加或加载模型?

要在控制器函数中加载模型,请使用以下函数

如果您的模型文件位于模型文件夹的子目录中,则必须指定完整路径。例如,如果您的文件位置是 `application/controller/models/project/ModelName`。那么,您的文件将按如下方式加载,


8) 如何手动将模型连接到数据库?

要手动连接数据库,请使用以下语法,

更多详情。

9) 解释 CodeIgniter 中的视图。

视图文件夹包含所有标记文件,如页眉、页脚、侧边栏等。它们可以通过将它们嵌入到控制器文件的任何位置来重复使用。它们不能直接调用,必须加载到控制器文件中。

视图语法

创建一个文件并将其保存在 application/views 文件夹中。 例如,我们创建了一个文件 Firstview.php,

Codeignter views 1
更多详情。

10) 如何在 CodeIgniter 中加载视图?

视图不能直接访问。它总是加载到控制器文件中。以下函数用于加载视图页面

在括号中写入视图的页面名称。 除非您使用其他扩展名,否则不需要指定 **.php**。

现在,转到您的控制器文件 **(Main.php)** 并编写如下代码。

Codeigntor views 2
更多详情。

11) 解释 CodeIgniter 中的控制器。

控制器是模型和视图之间的中介,用于处理 HTTP 请求并生成网页。它是您的 Web 应用程序中每个请求的中心。

考虑以下 URI,

在此 URI 中,CodeIgniter 尝试查找 Front.php 文件和 Front 类。

控制器语法
controller 1

查看上面的快照,控制器的文件名为 Main.php(首字母必须大写),类名为 Main(首字母必须大写)。

更多详情。

12) CodeIgniter 中的默认控制器是什么?

当 URL 中未提及文件名时,默认加载默认控制器中指定的文件。默认情况下,它是 welcome.php,这是安装 CodeIgniter 后看到的第一个页面。

使用 URL

由于 URL 中未提及文件名,因此将加载 Welcome.php。

尽管您可以根据需要更改文件 application/config/routes.php 中的默认控制器。

在这里,指定您希望默认加载的文件名。

更多详情。

13) 如何在 CodeIgniter 中调用构造函数?

要使用构造函数,您需要提及以下代码行,

更多详情。

14) CodeIgniter 的基本 URL 结构是什么?

它使用基于段的方法,而不是使用“查询字符串”方法。

其结构如下,

class 表示需要调用的控制器类。

function 是被调用的方法。

ID 是传递给控制器的附加段。


15) 什么是 CodeIgniter 的抑制器?

在 CodeIgniter 中,抑制器是一个错误处理类,它使用原生 PHP 函数(如 `set_exception_handler`、`set_error_handler`、`register_shutdown_function`)来处理解析错误、异常和致命错误。


16) CodeIgniter 中的默认方法名称是什么?

默认情况下,控制器总是调用 `index` 方法。如果您想调用不同的方法,则将其写入控制器的文件并在调用函数时指定其名称。

Codeigniter Methods 1

查看 URL。未提及方法名称。因此,默认加载 `index` 方法。

更多详情。

17) 解释 CodeIgniter 中的重映射方法调用。

URI 的第二个段决定了正在调用哪个方法。如果您想覆盖它,可以使用 `_remap()` 方法。`_remap` 方法总是被调用,即使 URI 不同。它覆盖了 URI。例如

更多详情。

18) 什么是 CodeIgniter 中的辅助函数?如何加载辅助函数文件?

辅助函数是一组函数,用于帮助用户执行特定任务。

URL 辅助函数:用于创建链接。

文本辅助函数:用于文本格式化。

Cookies 辅助函数:用于读取和设置 cookie。

更多详情。

19) 如何加载多个辅助函数文件?

要加载多个辅助函数文件,请将它们指定在一个数组中,

更多详情。

20) 解释 CodeIgniter 库。您将如何加载它?

CodeIgniter 提供了丰富的库集。它是 CodeIgniter 的重要组成部分,因为它提高了应用程序的开发速度。它位于 `system/library` 中。

它可以按如下方式加载,

更多详情。

21) 如何在 CodeIgniter 中创建库?

创建库有三种方法:

  • 创建一个全新的库
  • 扩展本机库
  • 替换本机库
更多详情。

22) 新创建的库在 CodeIgniter 结构中存储在哪里?

它应该放在 `application/libraries` 文件夹中。

更多详情。

23) 您可以扩展 CodeIgniter 中的原生库吗?

是的,我们可以通过添加一个或两个方法来为原生库添加一些扩展功能。它会用您的版本替换整个库。因此最好扩展类。扩展和替换几乎相同,只有以下例外。

  • 类声明必须扩展父类。
  • 新类名和文件名必须以 MY_ 为前缀。

例如,要将其扩展到原生 Calendar,请在 application/libraries 文件夹中创建一个名为 MY_Calendar.php 的文件。您的类声明为 class MY_Calendar extends CI_Calendar{}

更多详情。

24) 如何在 CodeIgniter 中扩展类?

您必须创建一个名为 `application/core/MY_Input.php` 的文件,并用 `Class MY_Input extends CI_Input {}` 声明您的类,以扩展 CodeIgniter 中的原生输入类。


25) 什么是 CodeIgniter 中的路由?

路由是一种技术,您可以通过它根据要求定义自己的 URL,而不是使用预定义的 URL。路由可以通过两种方式进行分类,使用通配符或正则表达式。

通配符

有两种类型的通配符

  • :num-只匹配包含数字的序列。
  • :any-只匹配包含字符的序列。
正则表达式

正则表达式也用于重定向路由。

您可以创建自己的正则表达式来运行您的 URL。

更多详情。

26) 为什么需要配置 URL 路由?

配置 URL 路由有许多目的。

  1. 增加页面访问量。
  2. 向用户隐藏代码复杂性。

27) 什么是 CodeIgniter 中的钩子?

钩子是 CodeIgniter 中的一项功能,它提供了一种在不修改核心文件的情况下改变框架内部工作方式的方法。它方便您在 CodeIgniter 中以特定路径执行脚本。通常,它在 application/config/hooks.php 文件中定义。

更多详情。

28) 如何启用 CodeIgniter 钩子?

要启用钩子,请转到 application/config/config.php/ 文件并将其设置为 TRUE,如下所示,

更多详情。

29) CodeIgniter 中不同类型的钩子点有哪些?

CodeIgniter 中不同类型的钩子点列表

  • post_controller_constructor - 在控制器启动后但任何方法调用之前立即调用。
  • pre_controller - 在控制器被调用之前立即调用。此时,所有类、安全检查和路由都已完成。
  • post_system - 在系统执行结束时,最终页面发送到浏览器后调用。
  • pre_system - 在系统执行之前很久就调用。此时只加载了基准测试和钩子类。
  • cache_override - 它允许您在输出类中调用您的函数。
  • display_override - 它用于在文件执行结束时发送最终页面。
  • post_controller - 在控制器完全执行后立即调用。
更多详情。

30) 什么是 CodeIgniter 驱动程序?

这些是一种特殊的库,它有一个父类和许多子类。这些子类可以访问父类,但不能访问它们的同级类。驱动程序位于 system/libraries 文件夹中。

更多详情。

31) 如何在 CodeIgniter 中初始化驱动程序?

要初始化驱动程序,请编写以下语法,

这里,class_name 是驱动程序名称。

更多详情。

32) 如何在 CodeIgniter 中创建驱动程序?

创建驱动程序有三个步骤

  1. 制作文件结构
  2. 制作驱动程序列表
  3. 制作驱动程序
更多详情。

33) 如何在 CodeIgniter 中连接多个数据库?

要同时连接多个数据库,请执行以下操作,

更多详情。

34) 如何在 CodeIgniter 模型中打印 SQL 语句?


35) 什么是 CodeIgniter 安全方法?

CodeIgniter 安全方法有助于创建安全的应用程序并处理输入数据。方法如下:

  • XSS 过滤
  • CSRF (跨站请求伪造)
  • 类引用
更多详情。

36) 什么是 XSS 安全参数?

XSS 代表跨站脚本。Codeigniter 包含一个跨站脚本攻击预防过滤器。XSS 过滤器针对触发 JavaScript 或其他类型可疑代码的方法。如果检测到任何内容,它会将数据转换为字符实体。

XSS 过滤使用 xss_clean() 方法来过滤数据。

有一个可选的第二个参数 `is_image`,用于测试图像是否存在 XSS 攻击。当此参数设置为 TRUE 时,它不会返回更改的字符串。相反,如果图像安全,则返回 TRUE;如果包含恶意信息,则返回 FALSE。

更多详情。

37) 如何防止 CodeIgniter 受到 CSRF 攻击?

有多种方法可以防止 CodeIgniter 受到 CSRF 攻击。最常用的方法是在网站的每个页面中使用隐藏字段。隐藏字段存储在用户的会话中。该字段会随着每个 HTTP 请求而更改。用户可以在其对网站的每个请求中被检测到。隐藏值始终与会话中保存的值进行比较。如果相同,则请求有效。

更多详情。

38) 如何启用 CSRF?

您可以通过编辑 config.php 文件并将其设置为 TRUE 来启用保护。

要启用CSRF,请在application/config/config.php文件中将以下语句从FALSE更改为TRUE。

更多详情。

39) CodeIgniter 中的 CSRF 攻击是什么?

CSRF攻击会强制已登录受害者的浏览器发送伪造的HTTP请求,包括受害者的会话cookie和其他身份验证信息到Web应用程序。

例如,假设您有一个带表单的网站。攻击者可以在其网站上创建一个虚假表单。此表单可能包含隐藏输入和恶意数据。此表单不会发送到攻击者的网站,实际上,它会发送到您的网站。您的网站会认为该表单是真实的并进行处理。

现在假设攻击者的表单指向您网站中的删除表单。如果用户已登录并被重定向到攻击者的网站,然后执行搜索,其帐户将在不知情的情况下被删除。这就是 CSRF 攻击。

更多详情。

40) CSRF 攻击中的令牌方法是什么?

为了防止 CSRF,我们需要连接两个 HTTP 请求:表单请求和表单提交。有几种方法可以做到这一点,但在 CodeIgniter 中,使用了隐藏字段,称为 CSRF 令牌。CSRF 令牌是一个随机值,会随每个发送的 HTTP 请求而变化。

每次请求都会生成一个新的 CSRF 令牌。创建对象时,会设置令牌的名称和值。

其函数是:

更多详情。