<?php
/*__clone()魔术方法:
1.当使用clone关键字clone对象时自动调用;
2.使用__clone()魔术方法是为了让新克隆的对象进行初始化重新赋值;
3.这个方法内部的$this代表的是新克隆的对象(副本);
*/
class person{
public $name;
public $age;
public $address;
function __construct($name,$age,$address){
$this->name=$name;
$this->age=$age;
$this->address=$address;
}
function say(){
echo "我的名字叫:".$this->name.",我的年纪是:".$this->age.",我来自:".$this->address."<br>";
}
function __destruct(){
echo "##############byebye<br>";
}
function __clone(){
$this->name="liuyi";
$this->age=18;
$this->address="jingshan";
}
}
$p=new person("刘仁","23","湖北");
//使用对象赋值的形式,析构方法只会调用一次;说明p2只是p的一个对象引用,也可以说是一个别名,对象是同一个而已;
$p2=$p;
$p->say();
//使用clone关键字则会单独在堆内存中赋值一份对象的属性和方法,所以析构方法会调用两次;
$p3=clone $p;
$p3->say();
?>
原文链接:https://blog.csdn.net/living_ren/article/details/75041191
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
还没有人抢沙发呢~