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
php 处理上百万条的数据库如何提高处理查询速度
Feb 08 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
PHP延迟静态绑定示例分享
Jun 22 PHP
php检查字符串中是否包含7位GSM字符的方法
Mar 17 PHP
详解php设置session(过期、失效、有效期)
Nov 12 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
Dec 24 PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 PHP
PHP智能识别收货地址信息实例
Jan 05 PHP
PHP XML Expat解析器知识点总结
Feb 15 PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 PHP
PHP设计模式之策略模式原理与用法实例分析
Apr 04 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文本数据库的搜索方法
2006/10/09 PHP
PHP中的正则表达式函数介绍
2012/02/27 PHP
php实现文件下载实例分享
2014/06/02 PHP
php中mkdir函数用法实例分析
2014/11/15 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
基于jquery的loading效果实现代码
2010/11/05 Javascript
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
js隐式全局变量造成的bug示例代码
2014/04/22 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
举例讲解jQuery中可见性过滤选择器的使用
2016/04/18 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
Python 支付整合开发包的实现
2019/01/23 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
5款实用的python 工具推荐
2020/10/13 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
DNA基因检测和分析:23andMe
2019/05/01 全球购物
教师党员思想汇报
2014/01/06 职场文书
获奖感言范文
2015/07/31 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书
ztree+ajax实现文件树下载功能
2021/05/18 Javascript