将属性从另一个对象添加到 stdClass 对象

2022-08-30 20:29:07

我希望能够执行以下操作:

$obj = new stdClass;
$obj->status = "success";

$obj2 = new stdClass;
$obj2->message = "OK";

如何扩展$obj,使其包含$obj 2的属性,例如:

$obj->status //"success"

$obj->message // "OK"

我知道我可以使用数组,将所有属性添加到数组中,然后将其转换回对象,但是有没有一种更优雅的方法,如下所示:

扩展($obj, $obj 2);将$obj 2中的所有属性添加到$obj

谢谢!


答案 1

这更像是他们的方式,你不想这样做....

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

但是,我认为这比必须迭代属性要好一些。


答案 2

如果对象是stdClass的实例(在你的情况下),你可以简单地扩展你的对象,就像...

$obj = new stdClass;
$obj->status = "success";

$obj2 = new stdClass;
$obj2->message = "OK";

$obj->message = $message;
$obj->subject = $subject;

....和尽可能多的你希望。


推荐