我的自定义库函数不起作用

时间:2016-02-03 10:33:04

标签: php codeigniter codeigniter-2 codeigniter-3

我的库中出现错误

Undefined property: Authenticate::$ci

这是我的自定义库函数

function is_logged_in() {

  $sessionid = $this->ci->session->userdata('moderId');

  if($sessionid) {
    return isset($sessionid);
  } else if(!$sessionid) {
    redirect(base_url() . 'moderator');
  }

}

这是我的控制器

class B2bcategory extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('moderator/b2bcategory_model');

        $this->authenticate->is_logged_in();
    }
}

2 个答案:

答案 0 :(得分:0)

我没看到你是否在库的构造区域中加载了get_instance(),在验证库中尝试这样的事情

文件名:Authenticate.php

<?php

class Authenticate {

    public function __construct() {
       $this->CI =& get_instance();
    }

    function is_logged_in() {

       $sessionid = $this->CI->session->userdata('moderId');

       if($sessionid) {
          return isset($sessionid);
       } else if(!$sessionid) {
          redirect(base_url() . 'moderator');
       }

    }
}

我发现使用get_instance在您的库中使用$this->CI似乎更好。

如果您没有自动加载库,则要在控制器上加载库。

文件名:B2bcategory.php

<?php

class B2bcategory extends CI_Controller {

   public function __construct() {
    parent::__construct();
     // Or Auto load it
     $this->load->library('authenticate');
     $this->load->model('moderator/b2bcategory_model');
     $this->authenticate->is_logged_in();
   }

}

答案 1 :(得分:0)

$this->load->model('moderator/b2bcategory_model', 'authenticate');

$ this-&gt; load-&gt; model('REAL_MODEL_PATH','PROPERTY_IN_CONTROLLER')

USAGE $ this-&gt; PROPERTY_IN_CONTROLLER-&gt; library_method()

但最好的方法是在application / core中创建ModeratorController.php

ModeratorController extends CI_Controller
{
     public function __construct()
     {
          parent::__construct();

          if($this->session->userdata('moder_id') === false)
          {
              redirect('site/moder_login');
          }
     }
}

所有现代控制器都从此控制器扩展