首页 > 编程笔记 > PHP笔记 阅读:16

PHP clone关键字的用法(附带实例)

在 PHP 中,当一个变量的值为对象时,如果将这个变量赋值给另一个变量,则此过程并不会创建对象的副本,而是使两个变量引用同一个对象。

如果想要获取多个相同的对象,并且某一个对象的成员发生改变时不影响其他对象的成员,可以通过对象的克隆来实现。

对象的克隆使用 clone 关键字,具体语法格式如下:
$对象名2 = clone $对象名1;
上述语法格式表示基于对象“$对象名1”克隆出对象“$对象名2”。

为了对比对象变量赋值和对象克隆的区别,下面分别进行代码演示:

1) 对象变量赋值的示例代码如下:
class Person
{
    public $age = 1; 
}
$object1 = new Person();
$object2 = $object1;
$object1->age = 10;
var_dump($object1->age);   // 输出结果:int(10)
var_dump($object2->age);   // 输出结果:int(10)
在上述代码中:
由此可见,当对对象变量赋值时,两个变量引用同一个对象。

2) 对象克隆的示例代码如下:
class Person
{
    public $age = 1;
}
$object1 = new Person();
$object2 = clone $object1;
$object1->age = 10;
var_dump($object1->age);   // 输出结果:int(10)
var_dump($object2->age);   // 输出结果:int(1)
在上述代码中:
由此可见,当对对象克隆时,两个变量引用不同的对象。

PHP __clone()魔术方法

PHP有很多魔术方法,这些方法不需要手动调用,它会在某一刻自动执行,使用魔术方法可以为程序的开发带来极大便利。

在克隆对象时,如果想要对新对象的某些属性进行初始化操作,可以通过 __clone() 魔术方法来实现。例如在 Person 类中使用 __clone() 魔术方法,示例代码如下:
class Person
{
    public function __clone()
    {
        echo '__clone()方法被执行了';
    }
}
在上述示例代码中,克隆 Person 类的对象时,会自动执行 __clone() 方法,在该方法中可以进行属性的初始化操作。

相关文章