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 相关文章推荐
在Zeus Web Server中安装PHP语言支持
Oct 09 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
PHP动态创建Web站点的方法
Aug 14 PHP
PHP把网页保存为word文件的三种方法
Apr 01 PHP
PHP中的替代语法简介
Aug 22 PHP
页面利用渐进式JPEG来提升用户体验度
Dec 01 PHP
php使用标签替换的方式生成静态页面
May 21 PHP
php简单计算页面加载时间的方法
Jun 19 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
Jul 02 PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 PHP
详解PHP5.6.30与Apache2.4.x配置
Jun 02 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
php执行sql语句的写法
2009/03/10 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
php实现的网络相册图片防盗链完美破解方法
2015/07/01 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
网页里控制图片大小的相关代码
2006/06/25 Javascript
使用Javascript和DOM Interfaces来处理HTML
2006/10/09 Javascript
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
2020/02/10 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
安装dbus-python的简要教程
2015/05/05 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
南威尔士家居商店:Leekes
2016/10/25 全球购物
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
幼儿园教师备课制度
2014/01/12 职场文书
初中语文教学反思范文
2016/03/03 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis