我有两个类,一个类存储对另一个的多个引用。在创建第二个类的新实例之后,我可能稍后需要更改其属性,并且希望它更新对该对象的所有引用。有没有一种方法可以使对象实例始终按引用传递,以便当对象中的属性更新时,它也更新对该对象的所有其他引用?
class Users {
private $members = array();
public function addMember($id) {
$member = new Member($id);
array_push($members, $member);
return $member;
}
}
class User {
public $id;
__construct($id) {
$this->id = $id;
}
public function addProperty($propName, $propValue) {
$this->{$propName} = $propValue;
}
}
因此,当前通过此设置,我可以创建一个新成员并将其添加到members数组:
$users = new Users();
$user = $users->addMember(1);
但是,如果我尝试这样向成员添加新属性:
$member->addProperty("job_title", "developer");
该属性未出现在member数组中,因为该成员未通过引用传递。
答案 0 :(得分:1)
看到这个:
public function addMember($id) {
$member = new Member($id);
....
在这里您创建了一个Member类的对象,但是我想您想要
$member = new User($id);