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 相关文章推荐
杏林同学录(五)
Oct 09 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
Jul 01 PHP
PHP实现批量修改文件后缀名的方法
Jul 30 PHP
如何使用纯PHP实现定时器任务(Timer)
Jul 31 PHP
Yii快速入门经典教程
Dec 28 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
php PDO异常处理详解
Nov 20 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 PHP
php file_get_contents取文件中数组元素的方法
Apr 01 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
Nov 06 PHP
详解提高使用Java反射的效率方法
Apr 29 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
第十四节--命名空间
2006/11/16 PHP
php jquery 实现新闻标签分类与无刷新分页
2009/12/18 PHP
PHP登录环节防止sql注入的方法浅析
2014/06/30 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
php实现可运算的验证码
2015/11/10 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
2017/01/20 Javascript
浅谈Vue.js
2017/03/02 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
Javascript confirm多种使用方法解析
2020/09/25 Javascript
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
详解【python】str与json类型转换
2019/04/29 Python
Python当中的array数组对象实例详解
2019/06/12 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
教师通用专业自荐书范文
2014/02/11 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
万能检讨书
2015/01/27 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP
Go语言编译原理之变量捕获
2022/08/05 Golang