调用CodeIgniter自定义AlertClasse库时出现Undefined property错误求助
解决CodeIgniter中自定义库调用的Undefined Property错误
首先,咱们来看你遇到的核心问题:Undefined property: ControllerUser::$alertClasse,这个Notice错误的根源是CodeIgniter对自定义库的实例命名规则导致的,下面给你一步步分析和解决:
错误原因
在CodeIgniter框架中,加载自定义库时,默认会把库的实例名转换成全小写形式。你的库类是AlertClasse,对应的文件名应该是AlertClasse.php(框架要求库文件名首字母大写,与类名保持一致),当你用$this->load->library('alertClasse');加载后,框架实际生成的实例名是$this->alertclasse(全小写),而你在代码里用$this->alertClasse调用,自然找不到这个属性。
解决方案(二选一即可)
方案1:使用框架默认的全小写实例名调用
直接修改控制器中调用方法的代码,把实例名改成全小写的alertclasse:
public function affichageUser(){ // 修改实例名为全小写 $tabExpirProch = $this->alertclasse->ExpireProche(); $priv = $this->UserModel->getpriv(); $this->load->view('users/listUser',['privilege'=>$priv]); }
方案2:加载库时指定自定义实例名
如果你想保留$this->alertClasse的调用方式,可以在加载库的时候,通过第三个参数指定自定义的实例名:
function __construct() { parent::__construct(); // 第三个参数设置为你想要的实例名 $this->load->library('alertClasse', NULL, 'alertClasse'); $this->load->database(); $this->load->library('session'); }
设置完成后,你用$this->alertClasse->ExpireProche()就能正常调用方法了。
额外的潜在问题提醒
顺便检查了你的AlertClasse库代码,在stockExpire方法里有一行代码存在隐患:
$this->articles_model->mis_au_rebut($id);
这里的articles_model没有被正确加载和调用,应该改成以下形式(可以提前在库的__construct中加载模型):
// 确保模型被加载 $this->CI->load->model('Articles_model'); $this->CI->Articles_model->mis_au_rebut($id);
否则运行到这个方法时会触发新的错误。
内容的提问来源于stack exchange,提问作者KRA
相关产品推荐
相关产品推荐

