Проблема PHP с "__php_incomplete_class"

Я разрабатываю сайт с помощью CodeIgniter и создал пользователя и сеанс:

$user->first_name = 'Gerep'; $user->gender = 'M'; $user->age = '26'; $this->session->set_userdata('user', $user); 

Но когда я пытаюсь получить доступ к объекту сеанса:

 echo $this->session->userdata('user')->first_name; 

Он возвращает мне ошибку: Object of class __PHP_Incomplete_Class could not be converted to string

Я всегда так делал и никогда не сталкивался с этой проблемой.

Благодаря!

Related of "Проблема PHP с "__php_incomplete_class""

Определение класса не было загружено, когда PHP попытался десериализовать объект в сеансе.

Вы можете решить свою проблему, используя автозагрузку .

Решение работает, но вам нужно убедиться, что определения объектов класса читаются до сеанса:

 $autoload['libraries'] = array('**our class**','session','form_validation'); 

Посмотрите, есть ли у вас __autoload ($ class) и измените его, чтобы использовать способ spl_autoload_register (). Пример:

 function __autoload($class) { if (file_exists(APPPATH . 'core/' . $class .EXT)) { require_once APPPATH . 'core/' . $class . EXT; } else { if (file_exists(APPPATH . 'libraries/' . $class . EXT)) { require_once APPPATH . 'libraries/' . $class . EXT; } } } 

будет изменено на:

 function CIautoload($class) { if (file_exists(APPPATH . 'core/' . $class .EXT)) { require_once APPPATH . 'core/' . $class . EXT; } else { if (file_exists(APPPATH . 'libraries/' . $class . EXT)) { require_once APPPATH . 'libraries/' . $class . EXT; } } } spl_autoload_register('CIautoload'); 

Таким образом, вы сможете использовать всю мощность PHP 5.3 (и у вас не будет проблем с автозагрузками композитора и CI,; D)

объяснение

Если через некоторое время с помощью PHP 5.2 вы начнете использовать PHP> 5.3 и весь способ кодирования OO, вы начнете использовать spl_autoload_register . С CI в проектах с PHP 5.2, поскольку вы не могли использовать spl_autoload_register люди использовали известный хак для автозапуска классов с помощью function __autoload($class) которую они обычно пишут в файле config.php. Проблема в том, что когда вы смешиваете оба, функция spl_autoload_register переопределяет ваш класс __autoload и возникает ошибка, которую задает вопрос.

Это происходит со мной в последнее время, и чтение решений дает мне представление. Первая проблема заключается в том, что session_start был раньше, чем autload , это ошибка. Вы должны объявить свою autload или включить это, тогда вы можете выполнить session_start .