产生对象的方法:
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;