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 快速生成 Flash 动画的方法
Mar 06 PHP
PHP 输出缓存详解
Jun 20 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
php截取后台登陆密码的代码
May 05 PHP
浅析PHP文件下载原理
Dec 25 PHP
PHP使用CURL实现多线程抓取网页
Apr 30 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
Jun 13 PHP
php+croppic.js实现剪切上传图片功能
Aug 14 PHP
php微信公众号开发之微信企业付款给个人
Oct 04 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
PHP PDOStatement::getAttribute讲解
Feb 01 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 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使用gridView实现下拉列表筛选数据
2017/04/10 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
微信小程序 教程之wxapp 视图容器 view
2016/10/19 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
元素全屏的设置与监听实例
2017/11/28 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
python基础教程之字典操作详解
2014/03/25 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
python实现控制台打印的方法
2019/01/12 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
python动态进度条的实现代码
2019/07/03 Python
Python 保持登录状态进行接口测试的方法示例
2019/08/06 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
HTML5 Canvas标签使用收录
2009/07/07 HTML / CSS
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
Yves Rocher伊夫·黎雪美国官网:法国始创植物美肌1959
2019/01/09 全球购物
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
人事专员的岗位职责
2014/03/01 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
Go语言读取txt文档的操作方法
2022/01/22 Golang
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫