致命错误:调用未定义的方法stdClass :: My()

时间:2011-08-18 14:06:55

标签: php

当我第二次调用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");
    }
}

任何建议都将不胜感激。

2 个答案:

答案 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();

除非你知道自己在做什么,否则请不要使用全球。