可捕获的致命错误:类__PHP_Incomplete_Class的对象

时间:2010-11-11 15:20:29

标签: php

我收到此错误

捕获致命错误:第248行的user.php中无法将类__PHP_Incomplete_Class的对象转换为字符串 这是行

  function loadUser($userID)
  {
  global $db;   
    $res = $db->getrow("SELECT * FROM `{$this->dbTable}` WHERE `{$this->tbFields['userID']}` = '".$this->escape($userID)."' LIMIT 1");
    if ( !$res )
        return false;
    $this->userData = $res;
    $this->userID = $userID;
    $_SESSION[$this->sessionVariable] = $this->userID;
    return true;
  }

var_dump($_SESSION); 

array(1) { ["user"]=> &object(__PHP_Incomplete_Class)#1 (12) { ["__PHP_Incomplete_Class_Name"]=> string(11) "jooria_user" ["dbTable"]=> string(5) "users" ["sessionVariable"]=> string(4) "user" } }

3 个答案:

答案 0 :(得分:4)

这是一个存储在会话中的对象吗?您是否在从会话中检索对象之前声明了您的类?

无论如何,我的猜测是你错过了某个地方的阶级声明。

编辑:您的班级jooria_user在使用前未声明。这就是你得到这个错误的原因。

说你有这个:

<?php
session_start();
class A {}
$a = new A;
$_SESSION['A'] = $a;

然后您尝试在此脚本中访问它:

<?php
session_start();
$a = $_SESSION['A'];
var_dump($a);

/* outputs:
      object(__PHP_Incomplete_Class)#1 (1) {
        ["__PHP_Incomplete_Class_Name"]=>
        string(1) "A"
      }
*/

现在,如果你这样做了:

<?php
class A {} // declares the class here
session_start();
$a = $_SESSION['A'];
var_dump($a);

/* outputs:
      object(A)#1 (1) {
      }
*/

答案 1 :(得分:1)

看起来提供的函数参数$userID是一个对象,错误发生在这里:

$this->escape($userID)

(我没有看到任何可能导致此类错误的进一步字符串操作。)

请查看您使用。{/ p>调用loadUser()的参数

答案 2 :(得分:0)

首先,我要确保所有{ }个大括号都在正确的位置。我最后一行会遗漏}