PHP clone

PHP  clone

   

定义一个电视类

class Tv{public $width=100;public function setWidth($v){$this->width = $v;    }}

$a = new Tv();

$b = $a

$a->setWidth(200);

echo $b->width;        //结果是200

//原因,php对象的复制(赋值)是属于引用类型的

//要写解决上面的问题,操作变量$a的width使$b不受影响可以按下面的方法

$a = new Tv();

$b = clone $a;

$a->setWidth(200);

echo $b->width;        //结果是100

使用clone方法复制时,如果希望某些属性不被复制过去,可以使用__clone()方法

class Tv{public $width=100;public function setWidth($v){$this->width = $v;    }//被复制是调用,有clone关键词public function __clone(){$this->width = 0;    }}

$a = new Tv();

$b = clone $a;

$a->setWidth(200);

echo $b->width;        //结果是0

时间: 2025-01-18 10:11:18

PHP clone的相关文章

实现一个函数clone,使JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制

实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number.String.Object.Array.Boolean)进行值复制. 1 /** 对象克隆 2 * 支持基本数据类型及对象 3 * 递归方法 */ 4 function clone(obj) { 5 var o; 6 switch (typeof obj) { 7 case "undefined": 8 break; 9 case "string": o = obj + &q

git clone失败

git clone失败,提示输入的密码错误,执行以下两步 1. 重新生成ssh 在命令行执行命令:ssh-keygen -t rsa -C "[email protected]" 邮箱要输入自己的地址 2. 把生成的 ~/.ssh/id_rsa.pub 公共密钥添加到git网站上 记住要全部复制!

java中的clone()

什么是"clone"? 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的.在 Java语言中,用简单的赋值语句是不能满足这种需求的.要满足这种需求虽然有很多途径,但实现clone()方法是其中最简单,也是最高效的手段. Java的所有类都默认继承java.lang.Object类,在java.lan

Java clone()深拷贝、浅拷贝

Cloneable接口是一个空接口,仅用于标记对象,Cloneable接口里面是没有clone()方法,的clone()方法是Object类里面的方法!默认实现是一个Native方法 protected native Object clone() throws CloneNotSupportedException; 如果对象implement Cloneable接口的话,需要覆盖clone方法(因为Object类的clone方法是protected,需要覆盖为public) public Obj

Oracle 学习之 11g Clone 安装

如果你需要安装的数据库服务器比较多,使用图形化方式安装数据库软件的速度还是很慢,而且也比较麻烦.Oracle 11g 提供了Clone安装的方法. 步骤如下: 使用正常方法在服务器A上安装好Oracle. 将A机器上的$ORACLE_HOME打包,db_home1.zip . 将B机器的环境准备好,如建立用户.建立用户.修改内核参数,修改环境变量等等. 将zip包copy到B服务器,解压到任意目录. 执行Clone命令 A机器上打包 [[email protected] oracle]# zip

深度clone

1.之前在javascript的设计模式里面看到过,但是没有仔细去分析 2.下面的是一个例子(一种深度clone的写法): if (Obj instanceof Array) { buf = []; //创建一个空的数组 var i = Obj.length; while (i--) { buf[i] = clone(Obj[i]); } return buf; www.2cto.com }else if (Obj instanceof Object){ buf = {}; //创建一个空对象

java Object对象的clone方法

参考copy链接:http://blog.csdn.net/bigconvience/article/details/25025561 在看原型模式,发现要用到clone这个方法,以前和朋友聊过,没怎么看过,刚好要用,就看看了. 源码解释: /** * Creates and returns a copy of this object. The precise meaning * of "copy" may depend on the class of the object. The

【Lintcode】137.Clone Graph

题目: Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. How we serialize an undirected graph: Nodes are labeled uniquely. We use # as a separator for each node, and , as a separator for node label and each

133. Clone Graph

题目: Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ's undirected graph serialization: Nodes are labeled uniquely. We use # as a separator for each node, and , as a separator for node label and each n

git clone远程branch和tag

接着上一个笔记讲,我们想从remote repository上获取某个branch的某个tag.这句可以理解为,以angular,我们想获得angular的angular1的v.0.1.1的版本. 1.查看远程分支git branch -r //显示内容为origin/Androidorigin/mesa-esorigin/mesa-es-dri 如git checkout origin/Android 是不会clone远程的内容(也是错误做法) ------------------------