{site_name}

{site_name}

🌜 搜索

在 PHP 中,clone 是一个用于创建对象副本的关键词

php 𝄐 0
phpclone
在 PHP 中,clone 是一个用于创建对象副本的关键词。当你想要创建一个现有对象的完全独立副本时,可以使用 clone。

要使用 clone,首先需要确保对象所属的类实现了魔术方法 __clone()。这个方法会在克隆过程中被调用,并负责定义如何创建对象的副本。

下面是简单的使用 clone 的例子:

php
class MyClass {
public $name;

public function __construct($name) {
$this->name = $name;
}

// 实现 __clone() 方法来自定义对象的克隆行为
public function __clone() {
// 对象属性进行深拷贝
$this->name = clone $this->name;
}
}

$name = new stdClass();
$name->value = 'John';

$obj1 = new MyClass($name);
$obj2 = clone $obj1;

$obj1->name->value = 'Jane';

echo $obj1->name->value; // 输出:Jane
echo $obj2->name->value; // 输出:John


在上面的例子中,我们创建了一个名为 MyClass 的类,该类具有一个公共属性 $name。我们通过将一个 stdClass 对象分配给 $name 属性来初始化对象。

然后,我们创建了 $obj1 并将其赋值为 MyClass 的一个实例,其中 $name 属性被设置为新创建的 stdClass 对象。

接下来,我们使用 clone 关键词创建了 $obj2,它是 $obj1 的一个副本。 __clone() 方法被触发,并通过 clone $this->name 对 $obj2 的 $name 属性进行深拷贝。

最后,我们改变了 $obj1->name->value 的值为 'Jane',但 $obj2->name->value 保持不变。这是因为克隆创建了一个独立的对象副本,而不是共享相同的引用。