PHP

<?php
/**
 * 此例子解释什么是深克隆。
 * 克隆学生类。
 */
class Student {

	public $name = '张三';
	public $age  = 12;

	//所属老师
	public $teacher;

	//构造方法
	public function __construct( $name , Teacher $teacher) {
		$this->name = $name;
		$this->teacher = $teacher;
	}

	// 克隆方法
	// 对新对象,进行一系列的初始化操作,比如将原来的年龄改为2,将老师对象,更新为新的老师对象。
	// 操作的不是原始对象,而是复制出的新对象
	public function __clone() {
		$this->age = 2;

		//复制原有的老师对象,给予新的学生对象中的老师对象。
		$this->teacher = clone $this->teacher;
	}
}

class Teacher {
	public $teacherName = '张老师';
}

// 实例化学生类
$stu = new Student('张三', new Teacher());

// 复制一个学生类
$stu_back = clone $stu;


// 复制过后,将原学生类中的张老师更改为王老师
$stu->teacher->teacherName = '王老师';

// 打印对象 
var_dump($stu);

echo '<br>';

var_dump($stu_back);

结果:

原文地址:https://www.cnblogs.com/KTblog/p/5245131.html