将一个类声明为一个变量的编码器


codeigniter declaring a class in to one variable

我试图使用$admin->function()而不是$this->admin_model->function()当我试图在constructor中声明variable $admin=new Admin_model;并在其他函数中使用它时,它会给出错误。我的代码如下,我不太了解OOP的概念,有人可以帮助我。

class Admin extends CI_Controller {
    var $admin;
    function __construct() {
        parent::__construct();
        $this->load->model('admin_model');
        $admin=new Admin_model;
    }
    public function index($value='')
    {
        if(!$admin->is_admin_logged_in()){
            redirect('admin/login?r='.urlencode(current_url()));
        }
        $data['loggedin']=TRUE;
        $data['account']=$this->session->all_userdata();
        $this->load->view('pages/admin-home',isset($data)?$data:NULL);
    }
}

目前我正在使用这个方法

public function login()// this function belongs to the same controller mentioned above { $r=isset($_GET['r'])?urldecode($_GET['r']):'admin'; $admin=new Admin_model; if($admin->is_admin_logged_in()) redirect($r); }

我不想在每个函数中声明$admin=new Admin_model;,并希望使代码看起来很好和干净,所以也不喜欢使用$this->admin$this->admin_model

您正在尝试为模型提供别名(正如我所看到的)

你所要做的就是:

class Admin extends CI_Controller {
    function __construct() {
        parent::__construct();
        $this->load->model('admin_model', 'admin');
    }
    public function index($value='')
    {
        if(!$this->admin->is_admin_logged_in()){
            redirect('admin/login?r='.urlencode(current_url()));
        }
        $data['loggedin']=TRUE;
        $data['account']=$this->session->all_userdata();
        $this->load->view('pages/admin-home',isset($data)?$data:NULL);
    }
}

注意这里给出了模型的别名

$this->load->model('admin_model', 'admin');

以及如何使用

if(!$this->admin->is_admin_logged_in()){