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服务器实现多session并发运行
Oct 09 PHP
帖几个PHP的无限分类实现想法~
Jan 02 PHP
PHP+XML 制作简单的留言本 图文教程
Nov 02 PHP
php 静态变量的初始化
Nov 15 PHP
php提示undefined index的几种解决方法
May 21 PHP
Win下如何安装PHP的APC拓展
Aug 07 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
Sep 16 PHP
PHP文件读取功能的应用实例
May 08 PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
Aug 19 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 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读取csv数据保存到数组的方法
2015/01/03 PHP
PHP 正则表达式小结
2015/02/12 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
2011/10/31 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
Python去除字符串两端空格的方法
2015/05/21 Python
Python中的字符串类型基本知识学习教程
2016/02/04 Python
Python+Opencv识别两张相似图片
2020/03/23 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
python matplotlib坐标轴设置的方法
2017/12/05 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
Request的中断和ErrorHandler实例解析
2018/02/12 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
英国文具、办公用品和科技商店:Ryman
2018/09/27 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
师范毕业生自我鉴定
2014/01/15 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
群教个人对照检查材料
2014/08/20 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
学校教师培训工作总结
2015/10/14 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
MySQL学习之基础命令实操总结
2022/03/19 MySQL