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和ACCESS写聊天室(二)
Oct 09 PHP
php 日期和时间的处理-郑阿奇(续)
Jul 04 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
PHP生成不重复标识符的方法
Nov 21 PHP
php字符串截取函数用法分析
Nov 25 PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 PHP
PHP中把数据库查询结果输出为json格式简单实例
Apr 09 PHP
PHP正则获取页面所有图片地址
Mar 23 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
Jul 04 PHP
PHP将整数数字转换为罗马数字实例分享
Mar 17 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调用MySQL的存储过程的实现代码
2008/08/12 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
PHP内核探索之变量
2015/12/22 PHP
php实现微信模板消息推送
2018/03/30 PHP
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
详谈js模块化规范
2017/07/07 Javascript
Vee-Validate的使用方法详解
2017/09/22 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
python+pyqt5实现图片批量缩放工具
2019/03/18 Python
python分数表示方式和写法
2019/06/26 Python
python super()函数的基本使用
2020/09/10 Python
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
绩效考核实施方案
2014/03/18 职场文书
《搭石》教学反思
2014/04/07 职场文书
2014年销售部工作总结
2014/12/01 职场文书
社区国庆节活动总结
2015/03/23 职场文书
任命通知范文
2015/04/21 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python
Linux中文件的基本属性介绍
2022/06/01 Servers