我收到此错误
捕获致命错误:第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" } }
答案 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)
首先,我要确保所有{ }
个大括号都在正确的位置。我最后一行会遗漏}
。