두 번째로 My() 함수를 호출하면이 오류가 발생합니다. 어떤 제안을 크게 감상 할 수치명적인 오류 : 정의되지 않은 메서드를 호출하십시오. 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");
}
}
: 모든 것을 (나는 USER_ID을 요구하고있어) 처음 .. 아래로 벗겨진 코드가 잘 될 것 같다.
중지하십시오. 이런 식으로 계속 쓰지 마라. 유감스럽게 생각하지만, PHP로 수업을하는 방법 (또는 실제로 모든 OO 언어)이 아닙니다. 귀하의 질문을 편집하여 성취하고자하는 바가 무엇인지 알려주십시오. 더 나은 해결책을 찾을 수있을 것이라고 확신합니다. – Mchl
감사합니다. Mchl, 나는 일반 OOP 방식을 따르고 있지 않다는 것을 알고 있으며, 현재 전역에 대한 더 나은 대안을 사용하기위한 기사를 읽고 있습니다. 그러나 왜 내가 그 일을 그렇게 나쁘게 생각하는지 알지 못합니다. – dandoen
방금 첫 경험을했습니다. '$ user'는 전역 객체이기 때문에 코드에서'$ user'로 사용할 수 없습니다. '$ db'와'$ sessions'와 유사합니다. 대신 이러한 변수를 생성자에 인수로 전달하고 'User' 클래스의 인스턴스 변수로 저장하면이 위험을 피할 수 있습니다. 그것은 단지 한 가지입니다. '캡슐화''관심사 분리''다형성'' – Mchl