CodeIgniter Interview Questions and answers

CodeIgniter 面试问题

2025年3月17日 | 阅读 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 是一种软件,它为您提供与表示视图分离的逻辑视图。 因此,网页包含最少的脚本。

  • 模型 - 控制器管理模型。它代表你的数据结构。模型类包含函数,通过这些函数,你可以在数据库中插入、检索或更新信息。
  • 视图 - 视图是呈现给用户的信息。它可以是一个网页或页面的部分,如页眉和页脚。
  • 控制器 - 控制器是模型和视图之间的中介,用于处理 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() 方法。即使 URI 不同,_remap 方法也会被调用。它会覆盖 URI。例如

更多详情。

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

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

URL 助手: 用于创建链接。

文本助手: 用于文本格式化。

Cookie 助手: 用于读取和设置 cookie。

更多细节。

19) 如何加载多个助手文件?

要加载多个助手文件,请在数组中指定它们,

更多详情。

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

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

可以按如下方式加载它,

更多详情。

21) 你如何在 CodeIgniter 中创建库?

创建库有三种方法:

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

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

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

更多详情。

23) 你可以在 CodeIgniter 中扩展原生库吗?

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

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

例如,要将其扩展到原生日历,请在 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_sytem - 在最终页面在系统执行结束时发送到浏览器之后调用。
  • 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 文件并将其设置为来启用保护

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

更多细节。

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

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

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

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

更多详情。

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

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

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

其函数是:

更多详情。