Ответ 1
<?php
class MyObject
{
public function import(MyObject $object)
{
foreach (get_object_vars($object) as $key => $value) {
$this->$key = $value;
}
}
}
Будет делать то, что вы хотите, я думаю, но вы должны знать следующее:
-
get_object_vars
найдет только нестатические свойства -
get_object_vars
найдет доступные свойства в соответствии с областью
Часть в соответствии с областью очень важна и может заслуживать немного большего объяснения. Знаете ли вы, что область свойств зависит от класса, а не зависит от экземпляра в PHP?
Это означает, что в приведенном выше примере, если у вас есть свойство private $bar
в MyObject
, get_object_vars
увидит его, так как вы находитесь в экземпляре класса MyObject
. Очевидно, что это не сработает, если вы пытаетесь импортировать экземпляры другого класса.