<?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);
结果: