如何合并两个对象?

Rup*_*ott 5 php oop merge object

可能重复:
合并两个PHP对象的最佳方法是什么?

我有一个对象$ foo,它已经定义了一些方法和属性,另一个对象是$ bar,它只是一组属性.我想将$ bar的全部内容合并到$ foo中,这样$ bar的所有属性都成为$ foo的属性.

所以,如果事先我有,$ bar-> foobar,之后我应该可以使用$ foo-> foobar.

目前,我正在做以下事情:

foreach($bar as $key => $value) {
    $foo->$key = $value;
    }
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用数组,我只会执行以下操作之一:

$foo += $bar;

$foo = array_merge($foo, $bar);
Run Code Online (Sandbox Code Playgroud)

是否有类似的方式与对象这样做或我已经正确的方式吗?

请注意,我不知道$ bar自身成为$ foo的财产,即不是$ foo-> bar-> foobar

zet*_*ova 17

试试这个代码

echo $obj->name;  //show: carlos
echo $obj2->lastname; //show: montalvo here

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

$obj_merged->name; //show: carlos

$obj_merged->lastname; //show: montalvo here
Run Code Online (Sandbox Code Playgroud)


J C*_*per 3

如果 $bar 具有 $foo 的所有属性,那么它就是 Foo。因此,您的 Bar 类应该扩展(继承)Foo。(反之亦然,如果我把你们的名字搞混了!)

如果您出于某种原因不想使用继承,则可以将一个对象保留在另一个对象内部,并通过 __get() 和 __set 等魔术方法动态地将调用从外部对象重定向到另一个对象的属性(请参阅此处