我第二次調用My()函數時出現此錯誤。第一次(當我打電話是爲了USER_ID)似乎一切都很好..精簡代碼:致命錯誤:調用未定義的方法stdClass :: My()
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");
}
}
任何建議,將不勝感激。
請停止。不要繼續這樣寫。我很抱歉地說,但這不是你應該如何使用PHP中的類(或者實際上任何OO語言)。請編輯你的問題告訴我們,你想達到什麼目標,我相信我們可以爲你找到更好的解決方案。 – Mchl
感謝Mchl,我意識到我沒有遵循常規的OOP方式,而且我正在閱讀一篇文章,以便使用更好的替代方法來處理全局變量,但是我不明白爲什麼它如此糟糕以至於我在做什麼。 – dandoen
你剛剛有你的第一次經歷。因爲'$ user'是一個全局對象,所以你不能在你的代碼中將它用作'$ user'。與'$ db'和'$ sessions'類似。相反,如果您將這些變量作爲參數傳遞給構造函數,並將它們存儲爲User類的實例變量,則可以避免此風險。這只是一件事。請查找題目,如'封裝''關注分離''多態性' – Mchl