codeigniter自定义库无法加载

时间:2016-04-28 05:11:33

标签: codeigniter autoload

我是codeigniter的初学者,并且一直在努力创建一个我编写的自定义库来加载。我已设置CI以通过名为“check_login”的控制器启动网站。 该文件的内容如下:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Check_login extends CI_Controller {
    public function __construct (){
        parent::__construct();
        $this->load->library('check_login');
    }

    function index (){
        $this->check_login->checker();
    }
}

库'check_login'已放入CI/application/libraries/并包含以下脚本:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Check_Login {
    public function cheker (){
        //$CI =& get_instance();
        $is_logged_in = $this->session->userdata('is_logged_in');
        if(!isset($is_logged_in) || $is_logged_in != true){
            $this->load->view('welcome_message');
        }      
    }

}

我还尝试使用$CI =& get_instance();代替$this,并尝试将库的名称添加到autoload config文件中以查看它是否有效。浏览器显示的结果如下: The Output in image 我想知道是什么原因导致我的库无法加载,何时我应该使用get_instance();而不是$ this。非常感谢你提前。

2 个答案:

答案 0 :(得分:0)

似乎我对PHP知之甚少。我一直在调用库而不在变量中赋值。因此,在控制器的索引功能中,我应该将命令更改为: $q = $this->check_login->checker();echo $q;

答案 1 :(得分:0)

只需将您的班级名称更改为Check_login或其他小写的名称。您正在调用$this->check_login->checker();,而在您的库中,您的函数名称为cheker()

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Check_login {
    public function __construct()
    {
        $CI =& get_instance();   
    }
    public function cheker ()
    {
        $is_logged_in = $this->session->userdata('is_logged_in');
        if(!isset($is_logged_in) || $is_logged_in != true){
            $this->load->view('welcome_message');
    }      
}

为什么 $ CI =&amp; get_instance(); 通过引用分配允许您使用原始CodeIgniter对象而不是创建它的副本。