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与SQL注入攻击[三]
Apr 17 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
深入php常用函数的使用汇总
Jun 08 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
Jun 29 PHP
php中如何防止表单的重复提交
Aug 02 PHP
MyEclipse常用配置图文教程
Sep 11 PHP
简单介绍PHP的责任链编程模式
Aug 11 PHP
降低PHP Redis内存占用
Mar 23 PHP
thinkPHP框架实现生成条形码的方法示例
Jun 06 PHP
PHP addslashes()函数讲解
Feb 03 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
Feb 13 PHP
PHP检测一个数组有没有定义的方法步骤
Jul 20 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生成二维码的两种方法(带logo图像)
2014/03/14 PHP
PHP获取windows登录用户名的方法
2014/06/24 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
JavaScript程序设计之JS调试
2015/12/09 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
angular分页指令操作
2017/01/09 Javascript
原生js实现可拖动的登录框效果
2017/01/21 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
原生js实现购物车功能
2020/09/23 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
python中使用正则表达式的连接符示例代码
2017/10/10 Python
python实现K最近邻算法
2018/01/29 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
python软件都是免费的吗
2020/06/18 Python
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
UNIX文件名称有什么规定
2013/03/25 面试题
员工薪酬激励方案
2014/06/13 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
关于python中模块和重载的问题
2021/11/02 Python