php -- 魔术方法 之 对象克隆 : __clone()

产生对象的方法:

   1、从类产生对象。new,通过new去堆区开辟一块内存空间

   2、从对象产生对象。clone,通过关键字clone,将一个对象完整的复制一份,新开辟一块内存空间,将复制的结果存放到该内存里面

语法:新对象(变量) = clone 老对象(变量)

 

对象克隆:__clone()

当一个对象被clone的时候,被克隆的对象会自动调用__clone()方法,克隆方法不走构造方法

<?php

    //对象克隆
    class Person{
        //属性
        public $name;
        private $age;

        //静态属性
        public static $counts = 0;

        //方法
        public function __construct($name,$age){
            $this->name = $name;
            $this->age  = $age;

            //计数
            self::$counts++;
        }

        public function setAge($age){
            $this->age = $age;
        }

        public function getAge(){
            return $this->age;
        }

        //克隆魔术方法
        public function __clone(){
            //计数
            self::$counts++;

            //使用对象
            var_dump($this);
        }
    }
    echo '<pre>';

    //实例化
    $person = new Person('周芷若',15);
    var_dump($person);

    //克隆对象
    $person1 = clone $person;
    var_dump($person1);

    //修改对象
    $person1->name = '张无忌';
    var_dump($person1);

    //输出对象
    echo Person::$counts;                

 

posted @ 2015-07-15 14:09  goodup  阅读(602)  评论(0编辑  收藏  举报

如有不对之处,欢迎指出,一起成长