Объект сеанса CodeIgniter не найден - PullRequest
1 голос
/ 04 июня 2010

Я работаю над моделью, которая отслеживает пользовательские данные и сохраняет их в сеансе, где это уместно. Вот его основная структура:

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

    $this->load->database();
    $this->load->library('session');

    if (!is_null($this->session->userdata('user'))) {
        $arrData = $this->session->userdata('user');

        $this->_netID = $arrData['_netID'];
        $this->_fName = $arrData['_fName'];
        $this->_eventMgr = $arrData['_eventMgr'];
        $this->_accessMgr = $arrData['_accessMgr'];
        $this->_accessAcnt = $arrData['_accessAcnt'];
        $this->_accessEvnt = $arrData['_accessEvnt'];
        $this->_accessCMS = $arrData['_accessCMS'];
        $this->_accessReg = $arrData['_accessReg'];
        $this->_accessRep = $arrData['_accessRep'];
        $this->_accessPay = $arrData['_accessPay'];
        $this->_okEvents = $arrData['_okEvents'];
    }
}
public function __get($name) {
    switch($name) {
            default:
            if (function_exists('parent::__get')) {
                return parent::__get($name);
            } else {
                return $this->$name;
            }
    }
}
public function __set($name,$val) {
    switch($name) {
            default:
            if (function_exists('parent::__set')) {
                return parent::__set($name,$val);
            } else {
                 $this->$name = $val;               }
    }
}

У меня проблема прямо в конструкторе. Всякий раз, когда он попадает на седьмую строку (проверяя, является ли ключ пользователя нулевым), он выдает ошибку, говоря:

A PHP Error was encountered

Severity: Notice

Message: Undefined property: SessionUser::$session

Filename: models/sessionuser.php

Line Number: 83

Fatal error: Call to a member function userdata() on a non-object in /usr/cwis/data/www-data/melioraweekenddev/system/application/models/sessionuser.php on line 38

Есть идеи, почему?

1 Ответ

3 голосов
/ 05 июня 2010

Полагаю, вы пытаетесь загрузить библиотеку из модели, что напрямую невозможно. Попробуйте вместо:

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

    $CI =& get_instance(); //Loads the codeigniter base instance (The object your controller is extended from. & for php4 compatibility
    $CI->load->database();
    $CI->load->library('session');

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