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

Mos*_*ady 0 php

我收到这个错误

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

  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;
  }
Run Code Online (Sandbox Code Playgroud)

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" } }
Run Code Online (Sandbox Code Playgroud)

net*_*der 5

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

无论如何,我的猜测是您在某处缺少类声明。

编辑:您的类jooria_user在使用前未声明。这就是您收到该错误的原因。

假设你有这个:

<?php
session_start();
class A {}
$a = new A;
$_SESSION['A'] = $a;
Run Code Online (Sandbox Code Playgroud)

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

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

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

现在如果你这样做:

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

/* outputs:
      object(A)#1 (1) {
      }
*/
Run Code Online (Sandbox Code Playgroud)