我需要合并两个相同类型的自定义对象。这是班级的样子:
<?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);
除了使用循环迭代一个对象并获取和设置值之外,还有更多高性能或更简洁的方法吗?
答案 0 :(得分:0)
array_merge()不你想要什么。正如你正确指出的那样,它们不是数组
听起来我觉得你需要C ++称之为copy constructor。
基本上,你将不得不自己编写代码,所以在你的类中添加一个名为merge()的函数,它接受一个参数,这是该类的另一个对象。
要对其进行编码,您只需将参数数据的每个字段分配给对象的数据。
阅读object cloning上的PHP手册以获取更多信息。