如何使用另一个对象实例初始化PHP类的实例?

Mik*_*kel 5 php syntax class instantiation

使用同一个类的另一个对象(理想情况下在PHP 4.x中)初始化PHP类的实例有什么好方法(以及任何优点和缺点)

这里initialize()基本上是我想要做的(例子从我的用例非常简化,见下文):

$product = new Product('Widget');
$product2 = new Product('Widget #2');
$product->initialize($product2);
echo $product->name;  // echos "Widget #2"

class Product {
 var $name;
 function __constructor($name) {
   $this->name = $name;
 }
 function initialize($product) {
   // I know this cannot be done this way in PHP. 
   // What are the alternatives and their pros & cons?
   $this = $product;  
 }
}
Run Code Online (Sandbox Code Playgroud)

我知道这可能不是"良好的编程习惯"; 我有20多年的其他语言编程经验,我知道什么是好的,什么不是.所以,如果这样做有意义,我们希望我们不会被挂断.我有一个用例使用一些我无法改变的开源代码,所以请耐心等待我的需要.我实际上是在围绕一些埋藏在WordPress核心深处的非常丑陋的数组代码创建一个OOP包装器.

我正在尝试编写它,以便在将来的版本中,他们可以摆脱丑陋的基于数组的代码,因为每个人都将使用新的API,否则完全封装这些讨厌的数组.但为了使它优雅地工作,我需要能够执行上述操作(在PHP 4.x中)并且我不想编写仅复制属性的代码.

在此先感谢您的帮助.

UPDATE

你们中的许多人都在暗示,clone但除非我误解了这个问题.clone制作副本; 这不是问题的症结所在.我试图让构造的对象"成为"传入的对象.此时我假设没有办法做到这一点,基于5个答案中有0个建议除了我之外的事实如果只是我的问题不明确,那么在选择最佳状态之前会等待一段时间.

Mat*_*hew 5

在PHP 5中,对象克隆可能更相关:

http://php.net/manual/en/language.oop5.cloning.php

您可以定义一种特殊__clone方法.

在PHP 4和5中,您可以通过以下方式复制属性:

function copy($obj)
{
  foreach (get_object_vars($obj) as $key => $val)
  {
     $this->$key = $val;
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,您写道"我不想编写只复制属性的代码",而且我不确定您的意思.