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 相关文章推荐
用文本作数据处理
Oct 09 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
Jul 28 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
PHP实现的多彩标签效果代码分享
Aug 21 PHP
smarty中英文多编码字符截取乱码问题解决方法
Oct 28 PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
php 中的closure用法详解
Jun 12 PHP
php插件Xajax使用方法详解
Aug 31 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 PHP
PDO::setAttribute讲解
Jan 29 PHP
PHP 实现链式操作
Mar 09 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设计模式之责任链模式的深入解析
2013/06/13 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
Jquery 数组操作大全个人总结
2013/11/13 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
Nuxt.js实战和配置详解
2019/08/05 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
[01:11:10]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG加赛
2014/05/26 DOTA
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
python mac下安装虚拟环境的图文教程
2019/04/12 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
python之生成多层json结构的实现
2020/02/27 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
Python extract及contains方法代码实例
2020/09/11 Python
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
应届生服装设计自我评价
2013/09/20 职场文书
培训讲师邀请函
2014/01/10 职场文书
初二物理教学反思
2014/01/29 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
公司授权委托书范本
2014/09/18 职场文书
终止劳动合同协议书
2014/10/05 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
Python Flask请求扩展与中间件相关知识总结
2021/06/11 Python