
CodeIgniter4 中文手册
版本 4.0.0
CodeIgniter 基金会
CodeIgniter 中国开发者社区
2020 年 11 月 21 日


目录
1 欢迎使用 CodeIgniter4 1
1.1 CodeIgniter 是为谁准备的? . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 服务器安装要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.2 发展历程与贡献者 . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.3 PSR 规范 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 开始 5
2.1 安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 手动安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 通过 Composer 安装 . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.3 运行你的应用程序 . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.4 从老版本升级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.5 故障排除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1.6 CodeIgniter 仓库 . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 构建你的第一个应用 19
3.1 构建你的第一个应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.2 开始并运行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.3 欢迎页 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.4 调试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4 概览和常规主题 35
4.1 CodeIgniter4 概览 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1.1 应用结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1.2 模型,视图和控制器 . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1.3 自动加载文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.1.4 服务 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.1.5 处理 HTTP 请求 . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.1.6 安全指南 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 常规主题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2.1 配置文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2.2 CodeIgniter URL . . . . . . . . . . . . . . . . . . . . . . . . . . 57
i

4.2.3 辅助函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2.4 公共函数和全局常量 . . . . . . . . . . . . . . . . . . . . . . . . 62
4.2.5 记录日志信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.2.6 错误处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.2.7 网页缓存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.2.8 AJAX 请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.2.9 代码模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.2.10 管理多个应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.2.11 处理多环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5 请求处理 89
5.1 控制器和路由 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.1.1 控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.1.2 URI 路由 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.1.3 控制器过滤器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.1.4 HTTP 消息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.1.5 Request 类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5.1.6 IncomingRequest 类 . . . . . . . . . . . . . . . . . . . . . . . . 120
5.1.7 内容协商 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.1.8 HTTP 类型伪装 . . . . . . . . . . . . . . . . . . . . . . . . . . 132
5.1.9 处理 RESTful 请求资源 . . . . . . . . . . . . . . . . . . . . . . 133
5.2 构建响应 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
5.2.1 视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
5.2.2 子视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
5.2.3 视图渲染器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5.2.4 视图布局 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
5.2.5 View Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
5.2.6 HTML Table Class . . . . . . . . . . . . . . . . . . . . . . . . . 169
5.2.7 HTTP 响应 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5.2.8 API 响应特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
5.2.9 本地化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
5.2.10 在视图文件中使用 PHP 替代语法 . . . . . . . . . . . . . . . . . 198
6 数据库 201
6.1 数据库参考 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
6.1.1 数据库快速入门: 示例代码 . . . . . . . . . . . . . . . . . . . . 201
6.1.2 数据库配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
6.1.3 连接你的数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
6.1.4 执行查询 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
6.1.5 生成查询结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
6.1.6 查询语句辅助函数 . . . . . . . . . . . . . . . . . . . . . . . . . 227
6.1.7 查询构造器类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
6.1.8 事务 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
6.1.9 数据库元数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
6.1.10 自定义函数调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
6.1.11 数据库事件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
6.1.12 实用工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
6.2 数据建模 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
ii

6.2.1 Using CodeIgniter’s Model . . . . . . . . . . . . . . . . . . . . 271
6.2.2 Working With Entities . . . . . . . . . . . . . . . . . . . . . . . 289
6.3 管理数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
6.3.1 数据库工厂类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
6.3.2 数据库迁移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
6.3.3 数据填充 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
7 类库和辅助函数 317
7.1 类库参考 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
7.1.1 缓存驱动器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
7.1.2 CURLRequest 类 . . . . . . . . . . . . . . . . . . . . . . . . . . 322
7.1.3 Email Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
7.1.4 加密服务 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
7.1.5 使用文件类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
7.1.6 Honeypot Class . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
7.1.7 图像处理类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
7.1.8 分页类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
7.1.9 安全类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
7.1.10 Session 类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
7.1.11 限流类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
7.1.12 日期与时间类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
7.1.13 Typography 类 . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
7.1.14 使用文件上传类 . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
7.1.15 使用 URI 类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
7.1.16 User Agent Class . . . . . . . . . . . . . . . . . . . . . . . . . . 404
7.1.17 验证类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
7.2 辅助函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
7.2.1 Array Helper . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
7.2.2 Cookie 辅助函数 . . . . . . . . . . . . . . . . . . . . . . . . . . 428
7.2.3 Date Helper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
7.2.4 文件系统辅助函数 . . . . . . . . . . . . . . . . . . . . . . . . . 431
7.2.5 表单辅助函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
7.2.6 HTML 辅助函数 . . . . . . . . . . . . . . . . . . . . . . . . . . 451
7.2.7 偏转辅助函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
7.2.8 数字辅助函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
7.2.9 安全辅助函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
7.2.10 文本辅助函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
7.2.11 URL 辅助函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
7.2.12 XML 辅助函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
8 高级主题 489
8.1 测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
8.1.1 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
8.1.2 Testing Your Database . . . . . . . . . . . . . . . . . . . . . . . 495
8.1.3 Testing Controllers . . . . . . . . . . . . . . . . . . . . . . . . . 499
8.1.4 HTTP Feature Testing . . . . . . . . . . . . . . . . . . . . . . . 504
8.1.5 基准测试类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
8.1.6 调试你的应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
iii