当我第二次调用My()函数时,我收到此错误。第一次(当我要求user_id时)一切似乎都很好..剥离代码:
class User {
function My($field) {
global $user;
global $db;
global $sessions;
if ($sessions == 2) {
$user = $db->Row("SELECT * FROM users WHERE username='".$_SESSION['username']."'");
return $user->$field;
}
}
}
$user = new User;
class Index {
function Startup() {
global $user;
$user_id = $user->My("user_id");
$name = $user->My("firstname")." ".$user->My("surname");
}
}
任何建议都将不胜感激。
答案 0 :(得分:1)
抱歉,我的第一个回答是错误的!
因为你在My()和Startup()中都定义了$ user global,所以你在两个上下文中都是相同的数据。
frist time一切都很好,因为$ user已经初始化为代码中的某个用户对象。但是My()函数中的$ db-> Row()方法将全局$ user更改为没有My()opreation的stdClass。
解决方案:在My()
中删除$ user之前的全球一词答案 1 :(得分:0)
您必须首先初始化变量,如
$user = new User();
$user->my();
除非你知道自己在做什么,否则请不要使用全球。