您的位置:

php克隆对象及,php 克隆

本文目录一览:

php问题 克隆对象和引用对象的区别是什么

复制文件、建立快捷方式的区别,克隆就是复制,引用就是快捷方式,引用的对象实际上同一个东西,修改任何一个变量,另外一个也会跟着变化。

PHP对象克隆clone用法示例

本文实例讲述了PHP对象克隆clone用法。分享给大家供大家参考,具体如下:

浅克隆:只是克隆对象中的非对象非资源数据,即对象中属性存储的是对象类型,则会出现克隆不完全

?php

class

B{

public

$val

=

10;

}

class

A{

public

$val

=

20;

public

$b;

public

function

__construct(){

$this-b

=

new

B();

}

}

$obj_a

=

new

A();

$obj_b

=

clone

$obj_a;

$obj_a-val

=

30;

$obj_a-b-val

=

40;

var_dump($obj_a);

echo

'br';

var_dump($obj_b);

运行结果如下:

object(A)[1]

public

'val'

=

int

30

public

'b'

=

object(B)[2]

public

'val'

=

int

40

object(A)[3]

public

'val'

=

int

20

public

'b'

=

object(B)[2]

public

'val'

=

int

40

深克隆:一个对象的所有属性数据都彻底的复制,需要使用魔术方法__clone(),并在里面实现深度克隆

?php

class

B{

public

$val

=

10;

}

class

A{

public

$val

=

20;

public

$b;

public

function

__construct(){

$this-b

=

new

B();

}

public

function

__clone(){

$this-b

=

clone

$this-b;

}

}

$obj_a

=

new

A();

$obj_b

=

clone

$obj_a;

$obj_a-val

=

30;

$obj_a-b-val

=

40;

var_dump($obj_a);

echo

'br';

var_dump($obj_b);

运行结果如下:

object(A)[1]

public

'val'

=

int

30

public

'b'

=

object(B)[2]

public

'val'

=

int

40

object(A)[3]

public

'val'

=

int

20

public

'b'

=

object(B)[4]

public

'val'

=

int

10

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

在php中 clone 对象的值可以改变吗?(对象1中$var=2, 对象2克隆对象1 ,对象2.$var=3,print 对象1.$var;)

对象克隆后,得到是一个对象的实例,并将数据复制一份,两者各自的数据都是独立的。请参看以下代码:

?php

class corporatedrone {

private $employeeid;

private $tiecolor;

function setEmployeeID($employeeid) {

$this-employeeid = $employeeid;

}

function getEmployeeID() {

return $this-employeeid;

}

function setTiecolor($tiecolor) {

$this-tiecolor = $tiecolor;

}

function getTiecolor() {

return $this-tiecolor;

}

}

// 建立对象1

$drone1 = new corporatedrone();

// 设置对象1属性

$drone1-setEmployeeID("12345");

$drone1-setTiecolor("red");

// 克隆对象1

$drone2 = clone $drone1;

// 设置对象2属性

$drone2-setEmployeeID("67890");

// 输出两个对象的成员属性

echo "对象1 employeeID: ".$drone1-getEmployeeID()."br /";

echo "对象1 tie color: ".$drone1-getTiecolor()."br /";

echo "对象2 employeeID: ".$drone2-getEmployeeID()."br /";

echo "对象2 tie color: ".$drone2-getTiecolor()."br /";

?