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实现文件上传二法
Oct 09 PHP
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
基于php-fpm的配置详解
Jun 03 PHP
解析PHP生成静态html文件的三种方法
Jun 18 PHP
PHP扩展CURL的用法详解
Jun 20 PHP
PHP的引用详解
Feb 22 PHP
PHP多文件上传类实例
Mar 07 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
php简单实现数组分页的方法
Apr 30 PHP
PHP登录(ajax提交数据和后台校验)实例分享
Dec 29 PHP
laravel-admin的多级联动方法
Sep 30 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 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
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
2013/07/08 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
javascript实现动态模态绑定grid过程代码
2014/09/22 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
使用three.js 画渐变的直线
2016/06/05 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
vue3.0+vue-router+element-plus初实践
2020/12/02 Vue.js
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
python如何实现数据的线性拟合
2019/07/19 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
秋季运动会广播稿
2014/02/22 职场文书
项目经理聘任书
2014/03/29 职场文书
公司经理任命书
2014/06/05 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python
Python实现随机生成迷宫并自动寻路
2021/06/13 Python
python实现会员信息管理系统(List)
2022/03/18 Python
Nginx的基本概念和原理
2022/03/21 Servers