第五节 克隆 [5]


Posted in PHP onOctober 09, 2006

PHP5中的对象模型通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 . 为了这样的目的,PHP定义了一个特殊的方法,称为__clone. 像__construct和__destruct一样,前面有两个下划线.

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

克隆的方法可以没有参数,但它同时包含this和that指针(that指向被复制的对象). 如果你选择克隆自己,你要小心复制任何你要你的对象包含的信息,从that到this. 如果你用__clone来复制. PHP不会执行任何隐性的复制,

下面显示了一个用系列序数来自动化对象的例子:  <?php
class ObjectTracker file://对象跟踪器
{
private static $nextSerial = 0;
private $id;
private $name;

function __construct($name) file://构造函数
{
$this->name = $name;
$this->id = ++self::$nextSerial;
}

function __clone() file://克隆
{
$this->name = "Clone of $that->name";
$this->id = ++self::$nextSerial;
}

function getId() file://获取id属性的值
{
return($this->id);
}

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

$ot = new ObjectTracker("Zeev's Object");
$ot2 = $ot->__clone();

//输出: 1 Zeev's Object
print($ot->getId() . " " . $ot->getName() . "<br>");

//输出: 2 Clone of Zeev's Object
print($ot2->getId() . " " . $ot2->getName() . "<br>");
?>

PHP 相关文章推荐
php中常用编辑器推荐
Jan 02 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
Jul 01 PHP
php获取post中的json数据的实现方法
Jun 08 PHP
php 字符串替换的方法
Jan 10 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
Aug 21 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
Dec 14 PHP
PHP+Ajax+JS实现多图上传
May 07 PHP
Laravel使用支付宝进行支付的示例代码
Aug 16 PHP
PHP fprintf()函数用法讲解
Feb 16 PHP
PHP文件后缀不强制为.php方法
Mar 31 PHP
TP5.0框架实现无限极回复功能的方法分析
May 04 PHP
goto语法在PHP中的使用教程
Sep 17 PHP
第六节 访问属性和方法 [6]
Oct 09 #PHP
第八节 访问方式 [8]
Oct 09 #PHP
第九节 绑定 [9]
Oct 09 #PHP
第十节 抽象方法和抽象类 [10]
Oct 09 #PHP
Extended CHM PHP 语法手册之 DIY
Oct 09 #PHP
使用PHP制作新闻系统的思路
Oct 09 #PHP
一个oracle+PHP的查询的例子
Oct 09 #PHP
You might like
提升PHP执行速度全攻略(上)
2006/10/09 PHP
怎样在UNIX系统下安装php3
2006/10/09 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python简单实现基数排序算法
2015/05/16 Python
python调用接口的4种方式代码实例
2019/11/19 Python
浅谈Python协程
2020/06/17 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
环境工程大学生自荐信
2013/10/21 职场文书
大学生毕业自我鉴定范文
2013/11/03 职场文书
期末考试动员演讲稿
2014/01/10 职场文书
基层干部十八大感言
2014/01/19 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
药品开票员岗位职责
2015/04/15 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书