Codeigniter 3报错Undefined Property $Ngetest,模型调用失败求助
解决CodeIgniter 3中调用模型时的"Undefined Property $Ngetest"错误
错误原因分析
出现这个错误的核心问题有两个:
- 模型文件名错误:你的模型文件命名为
Ngetest.phpp,多了一个后缀p,CodeIgniter无法识别并加载该文件,导致模型实例未被初始化。 - 模型实例调用规则不符:CodeIgniter 3默认加载模型后,会将模型类名转为全小写作为控制器中的属性名,直接使用类名(
$this->Ngetest)会找不到对应实例。
解决方案
1. 修正模型文件名
将模型文件重命名为Ngetest.php,确保文件名与类名完全一致,且后缀为标准的.php。
2. 调整控制器中的模型调用方式
有两种可选方式:
- 方式一:使用小写属性名调用
加载模型后,用全小写的模型名作为属性:public function index() { $dataModel = $this->ngetest->showEcho(); print_r($dataModel); } - 方式二:加载模型时指定别名
如果想保留类名的驼峰写法,可以在加载模型时指定别名,之后通过别名调用:public function __construct() { parent::__construct(); // 第二个参数指定别名,后续用$this->Ngetest调用 $this->load->model("Ngetest", "Ngetest"); }
修改后的完整代码
模型文件(Ngetest.php)
<?php defined('BASEPATH') or exit('No direct script access allowed'); class Ngetest extends CI_Model { public function showEcho() { return "naisu"; } }
控制器文件(Tunjuk.php)
<?php defined("BASEPATH") or exit("No direct script access allowed"); class Tunjuk extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model("Ngetest"); } public function index() { // 使用小写属性名调用模型方法 $dataModel = $this->ngetest->showEcho(); print_r($dataModel); } }
执行以上修改后,访问控制器的index方法就能正常输出naisu。
内容的提问来源于stack exchange,提问作者Syraxes
相关产品推荐
相关产品推荐

