千家信息网

如何使用PHP中clone关键字和__clone()方法

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇内容介绍了"如何使用PHP中clone关键字和__clone()方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅
千家信息网最后更新 2026年11月04日如何使用PHP中clone关键字和__clone()方法

本篇内容介绍了"如何使用PHP中clone关键字和__clone()方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在我们之前的学习中,有很多的关键字,比如$this、$new之类的,今天我们继续来看一下在PHP中也算比较常用到的关键字clone克隆关键字。在学习克隆关键字之前,我们需要知道PHP中的对象模型是通过引用来调用对象的,但是又是偶需要建议一个对象的副本,目的就是想再原有对象改变的时候能够不影响到对象副本。

这时候如果使用new关键字是可以重新创建对象,然后再给属性赋上相同的值,也是可以起到新建副本的作用,但是这种方法不仅麻烦而且容易出错,这时候就希望PHP能有一个完全一样的对象,而且这两个还不是互相干扰的,也就是我们想的克隆。那应该怎样去实现呢?不慌,接着看。

clone关键字

我们希望有一个能够和原本对象互不干扰的副本,在PHP中通过clone关键字就可以实现克隆对象了。

clone关键字的语法格式如下:

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

你可以把克隆这个动作理解为,把对象的内存区域进行复制,赋值后的对象与原对象之间是相互独立的。并且他们之间的成员方法、属性和值都是完全相同的。

接下来我们通过一个简单的实例来看一下clone的能力吧,示例如下:

 study1 = $study1;            $this -> study2 = $study2;        }        public function output(){            echo $this -> study1.','. $this -> study2.'
'; } } $obj = new father('好好学习', '天天向上'); $obj2 = clone $obj;//克隆$obj $obj -> output(); $obj2 -> output(); echo '
';    var_dump($obj);    var_dump($obj2);?>

输出结果:

其中我们需要注意的是,如果使用=将一个对象赋值给一个变量,那么这时得到的将是一个对象的引用,通过这个变量更改属性的值将会影响原来的对象。所以还是得用clone,更改属性值不会影响到原来的对象。

通过上述实例,我们已经知道应该如何去克隆一个对象来为我们所用了,但是对象克隆成功后,他的属性、成员方法以及值都是和原对象一模一样完全相同的,那这时候我们光说更改属性不会影响到原来的对象,但是应该怎样去给克隆后的副本成员属性重新赋值呢?这时候我们就要用到PHP魔术方法中的__clone()方法。

__clone()方法

PHP中__clone()方法是不能够直接调用的,有clone才有__clone(),只有通过clone关键字克隆了一个对象的时候,才能够通过这个克隆出来的对象来调用__clone()方法。

这时候再用到clone创建副本的时候,就需要注意了,PHP会检查__clone()是否存在。

要是不存在的话,PHP会默认赋值对象的全部属性;如果__clone()存在,也就是定义过了,那么也就会负责了新对象的属性。

加下来我们通过一个实例来看一下,实例如下:

 name = $name;            $this -> url  = $url;        }        public function output(){            echo $this -> name.','.$this -> url.'
'; } public function __clone(){//通过__clone()来更改新对象的属性 $this -> name = '福如东海'; $this -> url = '寿比南山'; } } $obj = new father('好好学习', '天天向上'); $obj2 = clone $obj; $obj -> output(); $obj2 -> output();?>

输出结果:

由上述实例,可以看出__clone() 方法不需要任何参数。其中我们还有一点可以知道的就是,想要禁止克隆的话,只需要在类中设置一个空的,访问权限为 private(私有的)的 __clone() 方法的话,就可以起到禁止克隆的目的了。

"如何使用PHP中clone关键字和__clone()方法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

对象 方法 关键 关键字 属性 副本 实例 学习 影响 相同 成员 时候 输出 天天向上 接下来 之间 也就是 内容 变量 名称 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网加科技 互联网科技公司排名 天津市摩尔互联网科技 深圳恒合互联网络科技有限公司 互联网巨头反垄断金融科技 互联网科技作文 互联网科技大会 互联网科技创新企业排名 成都玖崟互联网科技有限公司乐商圈怎么样 华服互联网科技官网 受益于互联网科技的高速发展 苏州五指互联网络科技有限 辽宁互联网新科技 互联网媒体平台算高科技产业 用友工业互联网科技发展 众安科技工业互联网合作 互联网科技实习生岗位 从那以后互联网科技有限公司 上海旺乐尼互联网科技有限公司 网互联网络科技 互联网科技有限公司经营范围 互联网为科技 互联网和黑科技的看法 互联网科技大赛获奖感言 怎样加入科技互联网 互联网科技股为什么大涨 广州燕处互联网科技有限公司 世界互联网科技成果奖 国产互联网科技公司 绵阳真晨互联网科技有限公司
0