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 之 没有mysql支持时的替代方案
Oct 09 PHP
理解PHP5中static和const关键字的区别
Mar 19 PHP
php中定义网站根目录的常用方法
Aug 08 PHP
PHP 伪静态技术原理以及突破原理实现介绍
Jul 12 PHP
PHP set_error_handler()函数使用详解(示例)
Nov 12 PHP
神盾加密解密教程(一)PHP变量可用字符
May 28 PHP
微信营销平台系统?刮刮乐的开发
Jun 10 PHP
php实现excel中rank函数功能的方法
Jan 20 PHP
PHP利用二叉堆实现TopK-算法的方法详解
Apr 24 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
php格式文件打开的四种方法
Feb 24 PHP
PDO::prepare讲解
Jan 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
星际原理概述
2020/03/04 星际争霸
S900/ ETON E1-XM 收音机
2021/03/02 无线电
刚才在简化php的库,结果发现很多东西
2006/12/31 PHP
PHP sprintf()函数用例解析
2011/05/18 PHP
php 常用的系统函数
2017/02/07 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
详解Vue路由自动注入实践
2019/04/17 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
Python采集腾讯新闻实例
2014/07/10 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
python获取代理IP的实例分享
2018/05/07 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
网络技术支持面试题
2013/04/22 面试题
教你打造完美的创业计划书
2014/01/06 职场文书
服务之星获奖感言
2014/01/21 职场文书
物流创业计划书
2014/02/01 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
材料物理专业求职信
2014/09/01 职场文书
谢师宴答谢词
2015/01/05 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
2015医院个人工作总结范文
2015/05/21 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书