我有以下的 “学生” 类:PHP OOP:访问变量
class Student {
public $user_id;
public $name;
public function __construct($user_id) {
$info = $this->studentInfo($user_id);
$this->name = $info['name'];
$this->is_instructor = $info['is_instructor'];
$this->user_id = $info['id'];
}
public static function studentInfo($id) {
global $db;
$u = mysql_fetch_array(mysql_query("SELECT * FROM $db[students] WHERE id='$id'"));
if($u) {
return $u;
}
}
public static function getCoursesByInstructor() {
global $db;
return mysql_query("SELECT courses.*, course_types.name FROM $db[courses] as courses
JOIN $db[course_types] as course_types ON courses.course_type_id=course_types.id
WHERE instructor_id='$this->user_id'");
}
}
我试图做的事:
$u = new Student(1);
$courses = $u->getCoursesByInstructor();
,但我得到以下错误:
致命错误:使用$ this,当不在对象上下文中的/Applications/MAMP/htdocs/flight1/phpincludes/classes/students.class.php上54行
54是哪里? – deceze 2011-12-31 00:59:59
注 - 不要使用'global'来访问'$ db'资源。将它作为参数传递给方法,或者(*可能你的静态方法将成为实例,根据这里的答案*)将它传递给对象的构造函数。 – Dan 2011-12-31 01:02:48