You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter中调用null对象的CheckUser()方法报错及代码咨询

错误原因分析

这个错误 Call to a member function CheckUser() on null 本质是你尝试调用一个null对象的方法——具体来说就是 $this->MUser 是null,所以调用它的 CheckUser() 方法时直接触发了报错。

为什么 $this->MUser 会是null?看你Login控制器的构造函数就能找到问题:

public function _construct() {
    parent::_construct();
    $this->load->model('MUser');
}

这里有个致命的语法错误:PHP类的构造函数必须是两个下划线开头的 __construct(),你只写了一个下划线!这就导致这个构造函数根本不会被PHP自动执行,父类 CI_Controller 的构造逻辑也没触发,CodeIgniter的模型加载器等核心组件都没初始化,自然无法加载MUser模型,$this->MUser就成了null。

另外从你贴的validasi方法代码片段来看,你还写了$this->form_va...,这里明显是$this->form_validation的拼写错误,不过这是次要问题,先解决构造函数的核心问题再说。

解决方案

只需要修正构造函数的名字,把单下划线改成双下划线,确保构造函数被正确执行:

public function __construct() { // 这里改成两个下划线
    parent::__construct();
    $this->load->model('MUser');
}

这样做之后,父类的构造会正常运行,CI的模型加载器会初始化,$this->MUser就能成功加载对应的模型类,调用CheckUser()方法就不会再报错了。

顺便把validasi方法里的拼写错误也修正,把$this->form_va...补全为$this->form_validation,避免后续出现新的错误。

内容的提问来源于stack exchange,提问作者wisnu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:20:59