纵有疾风起
人生不言弃

PHP面向对象编程中的魔术方法__clone()

<?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

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

未经允许不得转载:起风网 » PHP面向对象编程中的魔术方法__clone()
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录