【问题标题】:Merging 2 custom objects合并 2 个自定义对象
【发布时间】:2011-11-02 02:48:44
【问题描述】:

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

<?php
class a{

    public $one;

    public $two;

          public function doSomething(){
              //do stuff
          }

}

我有 2 个 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);

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

【问题讨论】:

标签: php object merge


【解决方案1】:

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

在我看来,您需要 C++ 所称的 copy constructor

基本上,您将不得不自己编写代码,因此向您的类添加一个名为 merge() 的函数,该函数接受一个参数,该参数是该类的另一个对象。

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

阅读object cloning 上的 PHP 手册了解更多信息。

【讨论】:

    猜你喜欢
    • 2018-11-14
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2018-08-15
    • 2022-01-12
    • 2023-03-13
    相关资源
    最近更新 更多