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
php smarty模版引擎中的缓存应用
Dec 02 PHP
提高define性能的php扩展hidef的安装和使用
Jun 14 PHP
用PHP实现的四则运算表达式计算实现代码
Aug 02 PHP
解析PHP中$_FILES的使用以及注意事项
Jul 05 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
Jan 14 PHP
解决nginx不支持thinkphp中pathinfo的问题
Jul 21 PHP
ThinkPHP模型详解
Jul 27 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
PHP云打印类完整示例
Oct 15 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
laravel5环境隐藏index.php后缀(apache)的方法
Oct 12 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抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
laravel入门知识点整理
2020/09/15 PHP
js验证表单大全
2006/11/25 Javascript
如何使用Javascript正则表达式来格式化XML内容
2013/07/04 Javascript
javascript读写json示例
2014/04/11 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
浅谈js的异步执行
2016/10/18 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
2021/02/23 Python
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
《月光启蒙》教学反思
2014/03/01 职场文书
教师个人自我评价范文
2014/04/13 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
交通事故委托书范本精选
2014/10/04 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
求职意向书范本
2015/05/11 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
PHP正则表达式之RCEService回溯
2022/04/11 PHP