Php 从codeigniter库调用模型显示错误
您好,我在Php 从codeigniter库调用模型显示错误,php,codeigniter,model,static-libraries,Php,Codeigniter,Model,Static Libraries,您好,我在应用程序/库中创建了一个库Auth.php,用于验证当前用户是否登录。所以我的控制器是: $session_data = $this->session->userdata('logged_in'); $this->load->library('Auth'); $auth = new Auth; $user_id = $auth->authenticate($session_data); 图书馆: class Auth{ function auth
应用程序/库
中创建了一个库Auth.php
,用于验证当前用户是否登录。所以我的控制器是:
$session_data = $this->session->userdata('logged_in');
$this->load->library('Auth');
$auth = new Auth;
$user_id = $auth->authenticate($session_data);
图书馆:
class Auth{
function authenticate($vars){
$CI =&get_instance();
$CI->load->model('adminmodels/login_model');
$username = $vars['username'];
$password = $vars['password'];
$user_id = $vars['user_id'];;
$user_type = $vars['user_type'];
$check_login = $this->login_model->login($username,$password); //Line 14
if($check_login){
$user_id = $user_id;
}else{
$user_id = 0;
}
return $user_id;
}
}
但它显示的错误如下:
遇到一个PHP错误
严重性:通知
消息:未定义的属性:Auth::$login\u model
文件名:libraries/Auth.php
电话号码:14
我做错了什么???虽然通常是正确的,但在CI中,您应该这样调用库,而不是使用
new
关键字:
$this->load->library('Auth');
$user_id = $this->auth->authenticate($session_data);
此外,由于已将全局CI对象指定给变量,因此不能使用$this
引用它:
$check_login = $this->login_model->login($username,$password); //Line 14
应该是:
$check_login = $CI->login_model->login($username,$password); //Line 14
(因为您在那里加载了模型:
$CI->load->model('adminmodels/login_model');
)在Codeigniter库文件中,您不能在没有CI实例对象/变量的情况下使用$this旁路加载任何模型、配置或任何外部库
对于Auth.php第14行的情况,您错了:
$check_login = $this->login_model->login($username,$password); //Line 14
应该是这样的(如果仅从内部功能访问):
或者,如果从Auth类中的任何函数进行访问:
$check_login = $this->CI->login_model->login($username,$password); //Line 14
但首先,必须在构造函数中设置CI intance对象,如下所示:
$this->CI =&get_instance();
$this->CI->load->model('adminmodels/login_model');
在您采取上述第二种方案之前
我可以帮你。。。
谢谢
$this->CI =&get_instance();
$this->CI->load->model('adminmodels/login_model');