Где следует создавать экземпляр глобального объекта в Code Igniter?

Я хочу создать глобальный объект, представляющий текущего пользователя в Code Igniter. Конструктор объекта принимает идентификатор пользователя, который хранится в $_SESSION['user_id'].

Каждый раз, когда пользователь посещает страницу, я хочу создать этот пользовательский объект. Где я должен его создать? Я думаю, что его создание в config/constants.php работает, но есть ли более стандартное/надежное место для его создания?


person John Hoffman    schedule 28.03.2012    source источник


Ответы (1)


Один из вариантов — создать 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
    }

}
person Colin Brock    schedule 28.03.2012