在 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 保持不变。这是因为克隆创建了一个独立的对象副本,而不是共享相同的引用。
在 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 保持不变。这是因为克隆创建了一个独立的对象副本,而不是共享相同的引用。
本文地址:
/show-279034.html
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。