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发送post请求的三种方法
Feb 11 PHP
ThinkPHP缓存方法S()概述
Jun 13 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
常用PHP框架功能对照表
Oct 23 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
CI框架中cookie的操作方法分析
Dec 12 PHP
CodeIgniter基于Email类发邮件的方法
Mar 29 PHP
老生常谈PHP面向对象之注册表模式
May 26 PHP
PHP实现字母数字混合验证码功能
Jul 11 PHP
php多进程中的阻塞与非阻塞操作实例分析
Mar 04 PHP
如何在PHP中使用AES加密算法加密数据
Jun 24 PHP
PHP 实现重载
Mar 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从字符串创建函数的方法
2015/03/16 PHP
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
PHP使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
PHPMailer发送邮件
2016/12/28 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
JS数组的赋值介绍
2014/03/10 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
python连接mysql调用存储过程示例
2014/03/05 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
用Python解数独的方法示例
2019/10/24 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
四年大学自我鉴定
2014/02/17 职场文书
求职面试个人自我评价
2014/02/28 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers