Ошибка при создании библиотеки на Codeigniter - PullRequest
0 голосов
/ 29 сентября 2011

Я создал эту библиотеку:

class Header 
{

    function __construct()
    {
        $this->user();
    }

    function user()
    {
        $my_user = $this->session->userdata('my_user'); // True or False

        if($my_user)
        {
            echo 'user!';
        }
    }

}

/* End of file Header.php */

Я вызываю ее в любом контроллере:

public function __construct()
    {
        parent::__construct();
        $this->load->library('Header');
    }

Ошибка:

Неустранимая ошибка: Вызов функции-члена userdata () для необъекта в ** в строке 11

Я не знаю, в чем проблема, я уверен, что вызывается сеанс библиотеки (Я звоню из автозагрузки) ... что я могу сделать?Когда этот код библиотеки находится в каком-либо контроллере, он прекрасно работает, проблема в любом месте с пользовательской библиотекой.

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Проблема, с которой вы сталкиваетесь, заключается в том, что в библиотеке объект CI (этот) не загружен, вам нужно его получить.

Итак, попробуйте это (ссылка на объект CI хранится в переменной $ CI):

class Header 
{
    private $CI;
    function __construct()
    {
        $this->user();
        if (!isset($this->CI))
    $this->CI =& get_instance();
    }

    function user()
    {
        $my_user = $this->CI->session->userdata('my_user'); // True or False

        if($my_user)
        {
            echo 'user!';
        }
    }

}

В конструкторе вы получаете ссылку на объект CI и сохраняете ее в переменной $ CI, затем используете ее, когда хотите получить доступ к ее методам и т. Д.

1 голос
/ 29 сентября 2011

Это не будет работать в библиотеке, см. Документацию .

$CI =& get_instance();
$CI->load->library('session');

$my_user = $CI->session->userdata('my_user');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...