присвоение свойств одного объекта другому - PullRequest
0 голосов
/ 09 сентября 2011

возможно ли просто и быстро "присвоить свойства одного объекта другому"

class a {
    public $number_one;
    public $number_two;
    public $number_three;

    function __contruct() {
        //do stuff
    }
}

class b {
    public $my_var;

    function __contruct() {

        $instanc_a = new a();
        extract( $instance ); // but make these extracted object properties of class b????
                              // how? :-(
        echo $this->number_one;
    }
}

Ответы [ 2 ]

2 голосов
/ 09 сентября 2011

Вы можете использовать get_object_vars, чтобы скопировать открытые (только) свойства class a в текущий объект:

class b {
    public $my_var;

    function __construct() {
        $instanc_a = new a();
        $vars = get_object_vars($instanc_a);
        foreach($vars as $name => $value) {
            $this->$name = $value;
        }

        echo $this->number_one;
    }
}

Посмотреть вaction .

Примечание: В вашем коде есть опечатка (два случая "contruct" вместо "construct"), которая не дает вещам работать так, как онидолжен.

0 голосов
/ 09 сентября 2011

Звучит так, будто вы действительно хотите class b расширить class a

class b extends a {
    public $my_var;

    function __construct () {
        parent::__construct();
        // Now $this refers to anything in class b, or if it doesn't exist here, looks to class a for it

        echo $this->number_one;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...