PHP问题“__php_incomplete_class”

问题描述 投票:3回答:5

我正在开发使用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

我一直努力这样的,从未有过这个问题。

谢谢!

php session codeigniter object
5个回答
4
投票

类定义还没有被加载,当PHP试图反序列化对象的会话。

您可以通过使用Autoloading解决您的问题。


2
投票

解决方案的工作,但你需要确保类对象定义会话前阅读:

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

0
投票

你看,如果你有任何__autoload($类),并改变它使用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文件写信给autolad类。问题是,当你混合两者的spl_autoload_register功能将覆盖__autoload类和问题提出的错误会出现。


0
投票

这发生在我最近,阅读解决方案给我一个想法。第一个问题是,session_start是以前比autload,这就是错误。您必须声明你的autload或包括这点,你可以做session_start


0
投票

在session_start()的位置从顶部装载bothom重要becouse脚本。当你调用之前spl_autoload会话之前cllass(对象)加载,不知道往哪里放数据,所以它已经创建__PHP_Incomplete_Class对象。之前:

 session_start();

 spl_autoload_register(function($class){
     require_once 'classes/'.$class.'.php';
 });

结果:__PHP_Incomplete_Class对象([__PHP_Incomplete_Class_Name] =>用户[ID] ...)后:

 spl_autoload_register(function($class){
 require_once 'classes/'.$class.'.php';
 });

 session_start();

结果:用户对象([ID] => ...)

© www.soinside.com 2019 - 2024. All rights reserved.