php对象复制与(php copy函数)

本文目录一览:

PHP对象的浅复制与深复制的实例详解

PHP对象的浅复制与深复制的实例详解

最近在看原型模式时注意到这个问题~~PHP中对象

‘=’

与‘clone’的区别

实例代码:

//聚合类

class

ObjA

{

public

$num

=

0;

public

$objB;//包含的对象

function

__construct()

{

$this-objB

=

new

ObjB();

}

//只有实现了下面方法聚合类

才能实现深复制

/*function

__clone()

{

$this-objB

=

clone

$this-objB;

}*/

}

class

ObjB

{

public

$num2

=

0;

}

//原型对象

$objA

=

new

ObjA();

//复制对象(‘=’复制引用)

$objA2

=

$objA;

$objA2-num

=

2;

//随着$objA2-num的变化

$objA-num也变化了

print_r($objA-num.’br/’);//结果为2

print_r($objA2-num.’br/’);//结果为2

//复制对象(‘clone’关键字克隆)

$objA3

=

clone

$objA;

$objA3-num

=

4;

//随着$objA3-num的变化

$objA-num没有变化

print_r($objA-num.’br/’);//结果为2

print_r($objA3-num.’br/’);//结果为4

//但是clone的对象(是聚合类)中包含其他对象时所包含的对象(objB)复制的是引用

$objA3-objB-num2

=

7;

print_r($objA3-objB-num2.’br/’);//结果是7

print_r($objA-objB-num2.’br/’);//结果是7/pre

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

怎么在php中使用clone复制对象

(1)调用Cbitmap类的LoadBitmap函数调入位图资源。

(2)调用CDC::CreatCompatibleDC函数创建一个内存设备环境,以便位图在内存中保留下来,并于指定设备环境兼容。

php对象赋值问题

你这个是直接赋值了,然后又操作了$instance,没有操作$assigned,赋值的意思是,你在内存中开辟了一个空间,内容和$instance一样,所以你操作$instance,不会对$assigned有影响。

正确的应该是这样的:

第一行:$assigned = $instance;

这个就是把$assigned 和 $instance 指向了同一个内存地址,改变了$instance,$assigned当然也改变了。

php clone后是什么对象

在php5中,对象的传递方式默认为引用传递,如果我们想要在内存中生成两个一样的对象或者创建一个对象的副本,这时可以使用“克隆”。

通过 clone 克隆一个对象

对象的复制是通过关键字 clone 来实现的。用 clone 克隆出来的对象与原对象没有任何关系,它是把原来的对象从当前的位置重新复制了一份,也就是相当于在内存中新开辟了一块空间。通过关键字 clone 可以克隆一个对象,语法格式如下:

$克隆对象名称=clone $原对象名称;

__clone()方法

对象的__clone()方法不能够直接被调用,只有当通过关键字 clone 克隆一个对象时才可以使用该对象调用__clone()方法。当创建对象的一个副本时,php5将会检查__clone()方法是否存在。如果不存在,那 么它就会调用默认的__clone()方法,复制对象的所有属性。如果__clone方法已经定义过,那么__clone()方法就会负责设置新对象的属 性。所以在__clone()方法中,只需要覆盖那些需要更改的属性就可以了。例子如下:

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程序设计有所帮助。

原创文章,作者:XXGGL,如若转载,请注明出处:https://www.506064.com/n/129580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
XXGGLXXGGL
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相关推荐

  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python中capitalize函数的使用

    在Python的字符串操作中,capitalize函数常常被用到,这个函数可以使字符串中的第一个单词首字母大写,其余字母小写。在本文中,我们将从以下几个方面对capitalize函…

    编程 2025-04-29
  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • Python中set函数的作用

    Python中set函数是一个有用的数据类型,可以被用于许多编程场景中。在这篇文章中,我们将学习Python中set函数的多个方面,从而深入了解这个函数在Python中的用途。 一…

    编程 2025-04-29
  • 单片机打印函数

    单片机打印是指通过串口或并口将一些数据打印到终端设备上。在单片机应用中,打印非常重要。正确的打印数据可以让我们知道单片机运行的状态,方便我们进行调试;错误的打印数据可以帮助我们快速…

    编程 2025-04-29
  • 三角函数用英语怎么说

    三角函数,即三角比函数,是指在一个锐角三角形中某一角的对边、邻边之比。在数学中,三角函数包括正弦、余弦、正切等,它们在数学、物理、工程和计算机等领域都得到了广泛的应用。 一、正弦函…

    编程 2025-04-29
  • Python3定义函数参数类型

    Python是一门动态类型语言,不需要在定义变量时显示的指定变量类型,但是Python3中提供了函数参数类型的声明功能,在函数定义时明确定义参数类型。在函数的形参后面加上冒号(:)…

    编程 2025-04-29
  • Python定义函数判断奇偶数

    本文将从多个方面详细阐述Python定义函数判断奇偶数的方法,并提供完整的代码示例。 一、初步了解Python函数 在介绍Python如何定义函数判断奇偶数之前,我们先来了解一下P…

    编程 2025-04-29
  • Python实现计算阶乘的函数

    本文将介绍如何使用Python定义函数fact(n),计算n的阶乘。 一、什么是阶乘 阶乘指从1乘到指定数之间所有整数的乘积。如:5! = 5 * 4 * 3 * 2 * 1 = …

    编程 2025-04-29
  • 分段函数Python

    本文将从以下几个方面详细阐述Python中的分段函数,包括函数基本定义、调用示例、图像绘制、函数优化和应用实例。 一、函数基本定义 分段函数又称为条件函数,指一条直线段或曲线段,由…

    编程 2025-04-29

发表回复

登录后才能评论