php面对对象的三大特性(php中对象引用和复制实例分析)
php面对对象的三大特性
php中对象引用和复制实例分析本文实例讲述了php中对象引用和复制。分享给大家供大家参考,具体如下:
引用
|
$tv2 = $tv1 ; |
或者
|
$tv2 = & $tv1 ; |
以上两种方式,效果是一样的。可以理解为linux里面的硬链接。
克隆(浅复制)
|
$tv2 = clone $tv1 ; |
“浅复制”:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。也就是说,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。
深复制
|
$tv4 = unserialize(serialize( $tv1 )); |
相对于“浅复制”,当然也有一个“深复制”:被复制的对象的所有的变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。也就是说,深复制把要复制的对象所引用的对象都复制了一遍。
代码示例
|
<?php header( "Content-type:text/html;charset=utf-8" ); class TvControl{ } class Tv{ private $color ; private $tvControl ; function __construct(){ $this ->color = "black" ; $this ->tvControl = new TvControl(); } function setColor( $color ){ $this ->color = $color ; } function getColor(){ return $this ->color; } function getTvControl(){ return $this ->tvControl; } } $tv1 = new Tv(); $tvControl1 = $tv1 ->getTvControl(); echo "原始类:" ; var_dump( $tv1 ); echo "<hr/>" ; $tv2 = $tv1 ; echo "引用类:" ; var_dump( $tv2 ); echo "<hr/>" ; $tv3 = clone $tv1 ; echo "克隆(浅复制):" ; var_dump( $tv3 ); echo "<hr/>" ; $tv4 = unserialize(serialize( $tv1 )); echo "深复制:" ; var_dump( $tv4 ); |
输出结果:
原始类:
object(Tv)[1]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[2]
引用类:
object(Tv)[1]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[2]
克隆(浅复制):
object(Tv)[3]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[2]
深复制:
object(Tv)[4]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[5]
参考文章:http://www.zzvips.com/article/183632.html
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/koastal/article/details/52163483
- dedecms新字段(DEDECMSv5.6 tags.php标签不能按照时间排序的问题)
- php类的属性和方法(PHP进阶学习之反射基本概念与用法分析)
- phpsession方法(PHP SESSION机制的理解与实例)
- php集成支付(ThinkPHP框架整合微信支付之刷卡模式图文详解)
- php入门教程源代码修改教程(php+js实现的无刷新下载文件功能示例)
- wordpress的静态php页面在哪(如何让PHPnow支持wordpress静态化链接的方法)
- php 常见的三种缓存(PHP进阶学习之垃圾回收机制详解)
- php数组取值方法(php给数组赋值的实例方法)
- php 日志监控(php日志函数error_log用法实例分析)
- phpstudy的默认网站根目录是什么(phpstudy v8.0创建本地站点域名教程图文)
- thinkphp数据库使用(thinkphp3.2同时连接两个数据库的简单方法)
- php递归ajax的交互模型(PHP使用反向Ajax技术实现在线客服系统详解)
- php标签怎么写(php 使用mpdf实现指定字段配置字体样式的方法)
- phpword生成图片(PHP生成图片的方法分享)
- php错误提示问题(php提示Creating default object from empty value 的问题解决方法)
- think php上传服务器(ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例)
- 记忆中的台词(记忆中的台词)
- 袁冰妍轧戏 拍《琉璃》的同时还在拍《将夜》,难怪被骂演技差(拍琉璃的同时还在拍将夜)
- 刚红就耍大牌,《琉璃》角色滤镜碎一地,心疼工作人员(琉璃角色滤镜碎一地)
- 袁冰妍郑业成这对可以处,有脸红情话他们是真的敢说(袁冰妍郑业成这对可以处)
- 《祝卿好》台词又土又甜,就喜欢这么直接的恋爱(祝卿好台词又土又甜)
- 大女主 汤唯垂青电视圈,搭档朱亚文出演《大明皇妃孙若微传》(汤唯垂青电视圈)
热门推荐
- mysql主键自增策略(MySQL的主键命名策略相关)
- css3字体怎么写(css3个性化字体_动力节点Java学院整理)
- pytorch入门与实战(详解PyTorch基本操作)
- mysql获取当前日期时间(MySQL DATEDIFF函数获取两个日期的时间间隔的方法)
- elasticsearch启动报错(解决Docker启动Elasticsearch7.x报错的问题)
- docker怎么做数据(Docker数据卷常用操作代码实例)
- python基于django的博客系统(利用django+wechat-python-sdk 创建微信服务器接入的方法)
- mysql标签的用法(mysql 的indexof函数用法说明)
- docker 部署netcore(关于Jenkins + Docker + ASP.NET Core自动化部署的问题避免踩坑)
- sql2008提供身份认证模式(SqlServer2000+ 身份证合法校验函数的示例代码)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9