codeigniter将一个类声明为一个变量

时间:2014-03-27 05:54:13

标签: php codeigniter

我正在尝试使用$admin->function()代替$this->admin_model->function() 当我尝试在variable中声明$admin=new Admin_model; constructor并在其他函数中使用它时会出错... 我的代码如下,我对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。< / p>

1 个答案:

答案 0 :(得分:0)

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

您所要做的就是:

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()){