PHP对象克隆clone用法示例


Posted in PHP onSeptember 28, 2016

本文实例讲述了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之第十天
Oct 09 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
May 02 PHP
php 按指定元素值去除数组元素的实现方法
Nov 04 PHP
PHP通过session id 实现session共享和登录验证的代码
Jun 03 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
Jul 01 PHP
php读取mysql中文数据出现乱码的解决方法
Aug 16 PHP
PHP中的类型约束介绍
May 11 PHP
php中动态变量用法实例
Jun 10 PHP
PHP生成推广海报的方法分享
Apr 22 PHP
PHP convert_cyr_string()函数讲解
Feb 13 PHP
Laravel 框架控制器 Controller原理与用法实例分析
Apr 14 PHP
thinkphp 获取控制器及控制器方法
Apr 16 PHP
PHP简单遍历对象示例
Sep 28 #PHP
PHP标准类(stdclass)用法示例
Sep 28 #PHP
PHP类型约束用法示例
Sep 28 #PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 #PHP
PHP序列化操作方法分析
Sep 28 #PHP
PHP类的特性实例分析
Sep 28 #PHP
PHP页面跳转操作实例分析(header方法)
Sep 28 #PHP
You might like
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
用PHP实现Ftp用户的在线管理
2012/02/16 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
Yii框架安装简明教程
2020/05/15 PHP
jquery下将选择的checkbox的id组成字符串的方法
2010/11/28 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
2019/04/13 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
Python正则表达式的使用范例详解
2014/08/08 Python
详解Python中dict与set的使用
2015/08/10 Python
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
python中自带的三个装饰器的实现
2019/11/08 Python
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
土木工程专业个人求职信
2013/12/05 职场文书
教育局长自荐信范文
2013/12/22 职场文书
园艺师求职信
2014/04/27 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技
Python数组变形的几种实现方法
2022/05/30 Python