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
- thinkphp5表单系统(thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例)
- php执行超时怎么办(PHP错误提示It is not safe to rely on the system……的解决方法)
- php 日志监控(php日志函数error_log用法实例分析)
- php语法基础知识(PHP中16个高危函数整理)
- php设计模式学习(PHP设计模式之PHP迭代器模式讲解)
- wordpress的静态php页面在哪(如何让PHPnow支持wordpress静态化链接的方法)
- php编写程序使用方法(php xhprof使用实例详解)
- php开发各种问题(解决php extension 加载顺序问题)
- docker部署php本地开发环境(CentOS7环境下使用Docker搭建PHP运行环境的过程详解)
- php100种算法(php实现的生成排列算法示例)
- 如何在php内加密解密(PHP中散列密码的安全性分析)
- php中trim函数(PHP中ltrim函数的用法与实例讲解)
- phpstudyv8.0使用教程学习(phpStudy环境安装SSL证书教程)
- php面向对象3大特征(PHP面向对象程序设计重载overloading操作详解)
- php与xml文件(PHP读取XML文件的方法实例总结DOMDocument及simplexml方法)
- dedecms标签调用原理(DEDECMS安全设置 执行php脚本限制设置方法apache+nginx)
- 网坛停摆三巨头亏损惨重,费德勒跌幅88 纳达少赚2400万(网坛停摆三巨头亏损惨重)
- Beyond 版本《无人深空》主线任务攻略 阿特拉斯之道(版本无人深空主线任务攻略)
- 全球科技界最有钱大佬TOP 15 你知道几位(全球科技界最有钱大佬TOP)
- 2主力后腰缺阵 泰山队奇兵有望获重用,赛季0出场,迎来中超首秀(泰山队奇兵有望获重用)
- 三分71 生死战爆发 篮网旧将丁威迪今天成奇兵,助队赢球(三分71生死战爆发)
- 《红 雄安》系列广播剧第一集 水上奇兵雁翎队(雄安系列广播剧第一集)
热门推荐
- 去除网页滚动条
- 如何修改serv-u主页信息(Serv-U安装使用图文教程)
- python爬取豆瓣电影评论(python使用requests模块实现爬取电影天堂最新电影信息)
- python dict 操作(Python中dict和set的用法讲解)
- python爬虫经典步骤(详解python爬虫系列之初识爬虫)
- apache怎么安装服务(apache后缀名支持 让apache支持apk ipk下载的方法)
- django操作默认数据库(Django数据库类库MySQLdb使用详解)
- mysql与oracle如何直接连接(Oracle更换为MySQL遇到的问题及解决)
- php运用redis实现抢购实例(PHP+redis实现微博的拉模型案例详解)
- .NET中生成带Logo的二维码
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9