Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从codeigniter库调用模型显示错误_Php_Codeigniter_Model_Static Libraries - Fatal编程技术网

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');