合并2个自定义对象

时间:2011-11-02 02:48:45

标签: php object merge

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

<?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);

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

1 个答案:

答案 0 :(得分:0)

array_merge()你想要什么。正如你正确指出的那样,它们不是数组

听起来我觉得你需要C ++称之为copy constructor

基本上,你将不得不自己编写代码,所以在你的类中添加一个名为merge()的函数,它接受一个参数,这是该类的另一个对象。

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

阅读object cloning上的PHP手册以获取更多信息。