
在 CodeIgniter 3 中,模型必须通过 $this->load->model() 加载后才能使用;直接 new TestModel() 实例化会失败,因其未被自动注册到类加载器中,且默认不支持命名空间。
在 codeigniter 3 中,模型必须通过 $this->load->model() 加载后才能使用;直接 new testmodel() 实例化会失败,因其未被自动注册到类加载器中,且默认不支持命名空间。
CodeIgniter 3 的模型机制基于传统的 PHP 文件包含与对象注入,不原生支持 PSR-4 命名空间自动加载(如 use \models\TestModel),因此以下写法是错误的:
use \models\TestModel; // ❌ CodeIgniter 3 不识别此命名空间 $obj = new TestModel(); // ❌ 类未定义,抛出 "Class 'models\TestModel' not found"
✅ 正确做法是:将模型文件(如 application/models/TestModel.php)按 CodeIgniter 规范命名并放置,并在控制器中显式加载:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class TestController extends CI_Controller {
public function __construct() {
parent::__construct();
// ✅ 推荐:在构造函数中统一加载,确保所有方法均可访问
$this->load->model('TestModel'); // 注意:不带 .php 后缀,首字母大写亦可(CI 自动适配)
}
public function student() {
// ✅ 正确调用方式:通过 $this 访问已加载的模型实例
$value = $this->TestModel->student_college();
echo $value;
}
}⚠️ 补充说明与注意事项:
- 模型文件路径与命名规范:模型必须存放在 application/models/ 目录下,文件名如 TestModel.php,类名需严格匹配(class TestModel extends CI_Model);
- 不要手动 new 实例:即使加载后,也不应 new TestModel() —— CodeIgniter 已通过 $this->load->model() 将其实例化并挂载为 $this->TestModel 属性;
- 大小写敏感性:Linux 环境下文件系统区分大小写,请确保文件名(TestModel.php)与 load->model('TestModel') 参数完全一致;
- 方法调用链安全建议:实际开发中应检查模型方法返回值,避免直接 echo,推荐配合 json_encode() 或视图渲染输出。
? 小结:CodeIgniter 3 的模型是“服务容器式”设计,依赖框架内部的加载与绑定机制,而非标准 PHP 类自动加载。坚持使用 $this->load->model() + $this->ModelName->method() 是唯一可靠、符合框架约定的用法。

















