Добавление свойств объекта stdClass из другого объекта

Я хотел бы иметь возможность сделать следующее:

$obj = new stdClass; $obj->status = "success"; $obj2 = new stdClass; $obj2->message = "OK"; 

Как я могу расширить $ obj так, чтобы он содержал свойства $ obj2, например:

 $obj->status //"success" $obj->message // "OK" 

Я знаю, что могу использовать массив, добавлять все свойства в массив и затем отбрасывать его обратно на объект, но есть более элегантный способ, что-то вроде этого:

extend ($ obj, $ obj2); // добавляет все свойства из $ obj2 в $ obj

Благодаря!

Solutions Collecting From Web of "Добавление свойств объекта stdClass из другого объекта"

Это больше похоже на то, что вы не хотели этого делать ….

 $extended = (object) array_merge((array)$obj, (array)$obj2); 

Однако я думаю, что это будет немного лучше, чем перебирать свойства.

если объект является экземпляром stdClass (это в вашем случае), вы можете просто расширить свой объект, как …

 $obj = new stdClass; $obj->status = "success"; $obj2 = new stdClass; $obj2->message = "OK"; $obj->message = $message; $obj->subject = $subject; 

…. и столько, сколько пожелаете.

Вы можете использовать get_object_vars () на одном из объектов stdClass , перебирать их и добавлять к другому:

 function extend($obj, $obj2) { $vars = get_object_vars($obj2); foreach ($vars as $var => $value) { $obj->$var = $value; } return $obj; } 

Не уверен, если вы сочтете это более элегантным, заметьте.

Редактирование: если вы не скупились в том, чтобы хранить их в одном месте, взгляните на этот ответ на очень похожий вопрос .

взгляните на клонирование объектов http://php.net/manual/en/language.oop5.cloning.php