应该在Code Igniter中实例化一个全局对象?

时间:2012-03-28 02:52:55

标签: codeigniter

我想创建一个代表Code Igniter中当前用户的全局对象。对象的构造函数采用用户id,该用户id存储在$_SESSION['user_id']

每次用户访问页面时,我都想创建此用户对象。我应该在哪里实例化它?我认为在config / constants.php中实例化它是有效的,但是有一个更标准/可靠的地方来实例化它吗?

1 个答案:

答案 0 :(得分:3)

一个选项是创建一个MY_Controller,所有其他控制器都将从中继承。用户对象可以在MY_Controller中实例化,因此可以在从它继承的每个控制器中使用。

简化示例:

class MY_Controller extends CI_Controller {

    public $user;

    function __construct(){
        parent::__construct();

        // Get the current user (pseudo code, obviously)
        $this->user = $this->user_model->get_user($id);
    }

}

class Some_other_controller extends My_Controller {

    function __construct(){
        parent::__construct();
        // $user is available throughout this controller
    }

}

class Another_controller extends My_Controller {

    function __construct(){
        parent::__construct();
        // $user is available throughout this controller
    }

}