合并2个自定义对象


Merging 2 custom objects

我需要合并两个相同类型的自定义对象。这是类的样子:

<?php
class a{
    public $one;
    public $two;
          public function doSomething(){
              //do stuff
          }
}

我有两个a的实例,需要合并在一起。我知道我可以这样使用array_merge:

$result = (object)array_merge((array)$a1, (array)$a2);

但问题是,我需要结果是a类的,而不是stdObj

如果我这样做:

$result->doSomething()

一个错误结果:PHP Fatal error: Call to undefined method stdClass::doSomething()

由于我们不能将类型转换为非基元,因此不能执行以下操作:$result = (a)array_merge((array)$a1, (array)$a2);

除了使用循环迭代一个对象并获取和设置值之外,还有更高性能或更整洁的方法吗?

array_merge((不是您想要的。正如你正确指出的,它们不是阵列

在我看来,您需要C++所称的复制构造函数。

基本上,你必须自己编写代码,所以在你的类中添加一个名为merge((的函数,它接受一个参数,这个参数是该类的另一个分支。

要对其进行编码,只需将参数数据的每个单独字段分配给对象的数据。

有关更多信息,请阅读PHP对象克隆手册。