首页> 基础笔记 >PHP基础学习 >面向对象 面向对象
PHP面向对象之克隆对象
作者:小萝卜 2019-09-02 【 PHP 面向对象 】 浏览 1147
简介PHP面向对象之克隆对象,有时可能需要根据一个对象完全克隆出一个一模一样的对象,而且克隆以后,两个对象互不干扰。因为对象属于引用类型,普通的“=”号属于引用赋值,所有需要“clone”来复制一份。
PHP面向对象之克隆对象
有时可能需要根据一个对象完全克隆出一个一模一样的对象,而且克隆以后,两个对象互不干扰。因为对象属于引用类型,普通的“=”号属于引用赋值,所有需要“clone”来复制一份。
格式: $obj = new Class();
$objectcopy=clone $obj;
魔术方法:_ _clone() 当执行clone克隆时会自动调用的方法, 主要用于解决对象中特殊属性的复制操作。
实例1;
<?php
class Person {
private $name;
private $sex;
private $age;
public function __construct($name="", $sex="", $age=1) {
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}
public function __clone( ) { //在对象克隆时自动调用此方法,用来为新对象重新赋值
$this->name = "我是".$that->name."的副本"; //为副本对象中的name属性重新赋值
$this->age = 10; //为副本对象中的age属性重新赋值
}
public function say( ) {
echo "我的名字:".$this->name.",性别:".$this->sex.",年龄:".$this->age."<br>";
}
}
$p1 = new Person("张三", "男", 20); //创建对象并通过构造方法为对象中所有成员属性赋初值
$p2 = clone $p1; //使用clone克隆(复制)对象,并自动调用类中的__clone()方法
$p1 -> say(); //调用原对象中的说话方法,打印原对象中的全部属性值
$p2 -> say(); //调用副本对象中的说话方法,打印出克隆对象的全部属性值
实例2:
<?php
//普通对象的复制(克隆)clone:
//普通对象的属性信息都是基本数据类型(标量、空或数组)
$s1 = new Stu("zhangsan",20);
//$s2 = $s1; //引用赋值
$s2 = clone $s1; //克隆一个对象
echo "<pre>";
var_dump($s1);
var_dump($s2);
class Stu{
private $name;
private $age;
public function __construct($name,$age){
$this->name = $name;
$this->age = $age;
}
public function getInfo(){
return $this->name.":".$this->age;
}
}
很赞哦! (0)