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常用函数 推荐收藏保存
Feb 21 PHP
一个简单php扩展介绍与开发教程
Aug 19 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
Oct 25 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
Jun 21 PHP
PHP生成指定随机字符串的简单实现方法
Apr 01 PHP
百万级别知乎用户数据抓取与分析之PHP开发
Sep 28 PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 PHP
php表单处理操作
Nov 16 PHP
PHP APP微信提现接口代码
Sep 30 PHP
实例解析php的数据类型
Oct 24 PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
Mar 23 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 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
JS获取父节点方法
2009/08/20 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
Jquery Uploadify上传带进度条的简单实例
2014/02/12 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
javascript闭包概念简单解析(推荐)
2016/06/03 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
js实现交通灯效果
2017/01/13 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
Python脚本暴力破解栅栏密码
2015/10/19 Python
python实现学生管理系统
2018/01/11 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
人力资源总监工作说明
2014/03/03 职场文书
双语教学实施方案
2014/03/23 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
刑事代理授权委托书
2014/09/17 职场文书
2015年春训学习心得体会范文
2015/03/09 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
用几道面试题来看JavaScript执行机制
2021/04/30 Javascript
Django+Celery实现定时任务的示例
2021/06/23 Python
logback如何自定义日志存储
2021/08/30 Java/Android