修改存储对象

时间:2019-04-19 18:21:28

标签: php

我有两个类,一个类存储对另一个的多个引用。在创建第二个类的新实例之后,我可能稍后需要更改其属性,并且希望它更新对该对象的所有引用。有没有一种方法可以使对象实例始终按引用传递,以便当对象中的属性更新时,它也更新对该对象的所有其他引用?

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数组中,因为该成员未通过引用传递。

1 个答案:

答案 0 :(得分:1)

看到这个:

public function addMember($id) {
    $member = new Member($id);
    ....

在这里您创建了一个Member类的对象,但是我想您想要

    $member = new User($id);