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获得用户使用的代理服务器ip即真实ip
Dec 31 PHP
apache rewrite_module模块使用教程
Jan 10 PHP
php中文字符截取防乱码
Mar 28 PHP
使用PHP socke 向指定页面提交数据
Jul 23 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
php生成图形(Libchart)实例
Nov 06 PHP
php环境下利用session防止页面重复刷新的具体实现
Jan 09 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
May 25 PHP
解决微信授权回调页面域名只能设置一个的问题
Dec 11 PHP
浅谈ThinkPHP中initialize和construct的区别
Apr 01 PHP
Yii 2.0自带的验证码使用经验分享
Jun 19 PHP
php处理多图上传压缩代码功能
Jun 13 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
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
2017/02/10 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
2019/05/09 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
Python实现Kmeans聚类算法
2020/06/10 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
你对IPv6了解程度
2016/02/09 面试题
个人查摆剖析材料
2014/02/04 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
简单租房协议书范本
2014/08/20 职场文书
法人授权委托书公证范本
2014/09/14 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
python处理json数据文件
2022/04/11 Python