PHP clone 关键词
定义和用法
clone 关键字用于创建对象的副本。
如果对象的任何属性是对另一个变量或对象的引用,则只复制该引用。对象总是通过引用来传递,所以如果原始对象在其属性中有另一个对象,则副本将指向同一个对象。可以通过在类中创建 __clone() 方法来改变这种行为。
相关页面
教程:PHP 类和对象
实例
例子 1
创建对象的副本:
<?php
class MyClass {
public $color;
public $amount;
}
$obj = new MyClass();
$obj->color = "red";
$obj->amount = 5;
$copy = clone $obj;
print_r($copy);
?>
例子 2
创建带有引用的对象副本:
<?php
class MyClass {
public $amount;
}
// 创建一个带有引用的对象
$value = 5;
$obj = new MyClass();
$obj->amount = &$value;
// 克隆对象
$copy = clone $obj;
// 更改原始对象中的值
$obj->amount = 6;
// 副本已更改
print_r($copy);
?>
例子 3
使用 __clone() 方法来打破被复制对象中的引用:
<?php
class MyClass {
public $amount;
public function __clone() {
$value = $this->amount;
unset($this->amount); // 取消设置会中断引用 Unset breaks references
$this->amount = $value;
}
}
// 创建一个带有引用的对象
$value = 5;
$obj = new MyClass();
$obj->amount = &$value;
// 克隆对象
$copy = clone $obj;
// 更改原始对象中的值
$obj->amount = 6;
// 副本未更改
print_r($copy);
?>