【发布时间】:2009-07-14 16:07:04
【问题描述】:
我有三个类 MainClass、Member 和 Project。 Member 和 Project 扩展 MainClass。
首先我创建一个 MainClass 对象,然后创建一个 Member 对象并执行函数 setMember:
$mainclass = new MainClass();
$member = new Member($id);
$mainclass->setMember($member);
当 $member 变量设置为当前成员时,我想在我的 Project 类中使用这个变量,但我无法让它工作:s
我需要会员的 id 所以理论上有两种可能:
mysql_query("INSERT INTO projects (title, user_id) VALUES('$title', ".$this->member->id.")");
或
mysql_query("INSERT INTO projects (title, user_id) VALUES('$title', ".$this->member->getId().")");
第一个,$this->member->id,结果为NULL
第二个,$this->member->getId(),给了我这个错误:
在 a 上调用成员函数 getId() ....中的非对象。
这是我的课(我把大部分课都删掉了)
class MainClass{
public $member = NULL;
public function __construct(){}
public function setMember($member)
{
$this->member = $member;
}
public function getMember()
{
return $this->member;
}
}
class Project extends MainClass{
public $id;
public function __construct($id=NULL){
$this->setId($id);
}
public function setId($id){
$this->id = $id;
}
public function getId(){
return $this->id;
}
public function addProject($title){
mysql_query("INSERT INTO projects (title, user_id) VALUES('$title', ".$this->member->getId().")");
}
}
class Member extends MainClass{
public $id;
public function __construct($id=NULL){
$this->setId($id);
}
public function setId($id){
$this->id = $id;
}
public function getId(){
return $this->id;
}
}
【问题讨论】:
-
你在第一组代码中有错别字 - Mainlass();和 setMember($member) - 应该是 $Member。
-
调用 setMember($member) 后 print_r($mainClass) 会显示什么?