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 相关文章推荐
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 PHP
处理单名多值表单的详解
Jun 08 PHP
php中session使用示例
Mar 29 PHP
强制PHP命令行脚本单进程运行的方法
Apr 15 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
Jul 22 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 PHP
php使用$_POST或$_SESSION[]向js函数传参
Sep 16 PHP
php5.3不能连接mssql数据库的解决方法
Dec 27 PHP
zend框架实现支持sql server的操作方法
Dec 08 PHP
浅谈php中fopen不能创建中文文件名文件的问题
Feb 06 PHP
PHP Cli 模式设置进程名称的方法
Jun 12 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 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扩展编写点滴 技巧收集
2010/03/09 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
php返回json数据函数实例
2014/10/09 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
Vue组件选项props实例详解
2017/08/18 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
Node.js实现简单管理系统
2019/09/23 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python线程详解
2015/06/24 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
python logging.info在终端没输出的解决
2020/05/12 Python
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
信访工作个人总结
2015/03/03 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
Mysql Show Profile
2021/04/05 MySQL
mysql中关键词exists的用法实例详解
2022/06/10 MySQL