PHP 5.0对象模型深度探索之对象复制


Posted in PHP onMarch 27, 2008

默认地,用__clone方法将建立一个与原对象拥有相同属性和方法的对象. 如果你想在克隆时改变默认的内容,你要在__clone中覆写(属性或方法)。

克隆的方法可以没有参数,但它同时包含this和that指针(that指向被复制的对象)。如果你选择克隆自己,你要小心复制任何你要你的对象包含的信息,从that到this,如果你用__clone来复制,PHP不会执行任何隐性的复制,下面显示了一个用系列序数来自动化对象的例子:

class ObjectTracker //对象跟踪器  
{  
 private static $nextSerial = 0;  
 private $id;  
 private $name;   function __construct($name) //构造函数  
 {  

$this->name = $name;  

$this->id = ++self::$nextSerial;  
 }  
 function __clone() //克隆  
 {  

$this->name = "Clone of $this->name";  

$this->id = ++self::$nextSerial;  
 }  
 function getId() //获取id属性的值  
 {  

return($this->id);  
 }  
 function getName() //获取name属性的值  
 {  

return($this->name);  
 }  
}  
$ot = new ObjectTracker("Zeev's Object");  
$ot2 = clone$ot;  
//输出: 1 Zeev's Object  
print($ot->getId() . " " . $ot->getName() . "");  
//输出: 2 Clone of Zeev's Object  
print($ot2->getId() . " " . $ot2->getName() . "");  
?>

PHP 相关文章推荐
php5中类的学习
Mar 28 PHP
php生成随机数或者字符串的代码
Sep 05 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
Jan 18 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
Feb 08 PHP
php将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
php shell超强免杀、减少体积工具实现代码
Oct 16 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
smarty中post用法实例
Nov 28 PHP
PHP中iconv函数知识汇总
Jul 02 PHP
PHP添加图片水印、压缩、剪切的封装类
Aug 17 PHP
Zend Framework教程之Zend_Db_Table用法详解
Mar 21 PHP
PHP 5.0对象模型深度探索之属性和方法
Mar 27 #PHP
php简单静态页生成过程
Mar 27 #PHP
优化PHP代码的53条建议
Mar 27 #PHP
PHP连接access数据库
Mar 27 #PHP
某大型网络公司应聘时的笔试题目附答案
Mar 27 #PHP
php 无限极分类
Mar 27 #PHP
mysql时区问题
Mar 26 #PHP
You might like
php配合jquery实现增删操作具体实例
2013/12/12 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
javascript实现yield的方法
2013/11/06 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
JavaScript脚本库编写的方法
2015/12/09 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
微信小程序Echarts图表组件使用方法详解
2019/06/25 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
快速入手Python字符编码
2016/08/03 Python
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
灵泰克Java笔试题
2016/01/09 面试题
大学同学聚会邀请函
2014/01/19 职场文书
党性观念心得体会
2014/09/03 职场文书
预备党员介绍人意见
2015/06/01 职场文书
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle