克隆对象clone

在PHP中可以根据现有的对象克隆初一个完全一样的对象,克隆以后,原本和副本两个对象完全独立,互不干扰。

<?php

class person{

private $name;

private $sex;

private $age;

function __construct($name="",$sex="",$age=""){

$this->name=$name;

$this->sex=$sex;

$this->age=$age;

}

function say(){

echo "我的名字:".$this->name.";性别:".$this->sex.";年龄:".$this->age."<br/>";

}

}

$person1=new person("张三","男","40");

$person2=clone $person1;

$person1->say();

$person2->say();

?>

代码运行结果是:

如果需要对克隆后的副本对象在克隆时重新为成员属性赋初值,,则可以在类中声明一个魔术方法__clone()。该方法是在对象克隆时自动调用的,所以就可以通过此方法对克隆后的副本重新初始化。__clone()方法不需要任何参数,该方法中自动包含$this和$that两个对象的引用,$this是副本对象的引用,而$that是原本对象的引用。

<?php

class person{

private $name;

private $sex;

private $age;

function __construct($name="",$sex="",$age=""){

$this->name=$name;

$this->sex=$sex;

$this->age=$age;

}

function __clone(){

$this->name="张三";

$this->sex="女";

$this->age="20";

}

function say(){

echo "我的名字:".$this->name.";性别:".$this->sex.";年龄:".$this->age."<br/>";

}

}

$person1=new person("张三","男","40");

$person2=clone $person1;

$person1->say();

$person2->say();

?>

代码运行结果是:

时间: 2024-08-13 07:25:21

克隆对象clone的相关文章

Object之克隆对象clone 和__clone()函数

在前面的PHP面向对象之对象和引用,"$b=$a"的方式复制对象传递的是对象的地址,而不是传递对象的值(内容),我们可以通过克隆对象来实现对对象的内容和引用的复制 使用传址引用的方式调用对象,实质调用的是同一个对象,有时需要建设立一个对象的副本,改变原来的对象时不希望影响到副本,在PHP中可以根据现在的对象来克隆出一个完全一样的对象,克隆出来的副本和原本两个对象完全独立而互不干扰 在php中使用"clone"关键字来克隆对象 <?php class Perso

java克隆对象clone()的使用方法和作用

转自:997.html">http://www.okrs.cn/blog/news/?997.html 内容摘要 若需改动一个对象,同一时候不想改变调用者的对象.就要制作该对象的一个本地副本.这也是本地副本最常见的一种用途.若决定制作一个本地副本.仅仅需简单地使用clone()方法就可以.Clone是"克隆"的意思,即制作全然一模一样的副本.这种方法在基础类Object中定义成"protected"(受保护)模式. 但在希望克隆的不论什么衍生类中,必

Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨

Java对象克隆(Clone)及Cloneable接口.Serializable接口的深入探讨 Part I 没啥好说的,直接开始Part II吧. Part II 谈到了对象的克隆,就不得不说为什么要对对象进行克隆.Java中所有的对象都是保存在堆中,而堆是供全局共享的.也就是说,如果同一个Java程序的不同方法,只要能拿到某个对象的引用,引用者就可以随意的修改对象的内部数据(前提是这个对象的内部数据通过get/set方法曝露出来).有的时候,我们编写的代码想让调用者只获得该对象的一个拷贝(也

php面向对象之克隆对象

在前面的PHP面向对象之对象和引用,我们试图以"$b=$a"的方式复制对象以传递对象的值(内容),结果却是传递对象的地址,在结尾为了解决复制对象这个问题,提到了克隆的方法.接下来讲一下php面向对象之克隆对象. 前面我们已经知道,使用传址引用的方式调用对象,实质调用的是同一个对象,有时需要建设立一个对象的副本,改变原来的对象时不希望影响到副本,在PHP中可以根据现在的对象来克隆出一个完全一样的对象,克隆出来的副本和原本两个对象完全独立而互不干扰. 对象克隆 在php中使用"c

面向对象:输出对象、克隆对象、加载类

1.__tostring()能够直接输出对象 class ren { public $name; function run() { echo"跑"; } function __tostring() { return"name变量代表的是人员名称,run方法是一个跑的方法"; } } $r=new ren(); echo $r; 2.克隆对象__clone() class ren { public $name; function run() { echo"跑

jQ禁止右键点击、隐藏搜索文本框文字、在新窗口中打开链接、检测浏览器、预加载图片、页面样式切换、所有列等高、动态控制页面字体大小、获得鼠标指针的X值Y值、验证元素是否为空、替换元素、延迟加载、验证元素是否存在于Jquery集合中、使DIV可点击、克隆对象、使元素居中、计算元素个数、使用Google主机上的Jquery类库、禁用Jquery效果、解决Jquery类库与其他Javascript类库冲突

1. 禁止右键点击 代码如下: $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return false; }); }); 2. 隐藏搜索文本框文字 代码如下: $(document).ready(function() { $("input.text1").val("Enter your search text here"); textFill($

克隆对象和自动加载类

//克隆对象//关键字clone(克隆)class Ren{ public $name ="张三"; public function __clone() { $this->name = "李四"; } } $a = new Ren();$b = clone $a; $b->name="李四";echo $b->name; //加载类//include("写类文件的地址")require("写文件地址

克隆对象的几种方法

克隆对象在开发过程中经常会遇到,有些时候需要浅克隆,有些时候需要深克隆,具体它们之间有什么区别,以及实现方式有哪些,在这里总结一下. 实现深克隆有以下几种方法. 手动 代码如下: //手动复制 var user2 = new User { Id = user1.Id, Name = new UserName { FirstName= user1.Name.FirstName, LastName= user1.Name.LastName } }; 反射 代码如下: 1 //反射 2 var use

【PHP面向对象(OOP)编程入门教程】17.克隆对象__clone()方法

有的时候我们需要在一个项目里面,使用两个或多个一样的对象,如果你使用“new”关键字重新创建对象的话,再赋值上相同的属性,这样做比较烦琐而且也容易出错,所以要根据一个对象完全克隆出一个一模一样的对象,是非常有必要的,而且克隆以后,两个对象互不干扰. 在PHP4中我们使用“clone”这个关键字克隆对象: <? class Person { // 下面是人的成员属性 var $name; // 人的名子 var $sex; // 人的性别 var $age; // 人的年龄 // 定义一个构造方法