产生对象的方法:

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;
05-28 21:58