第五节 克隆 [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 相关文章推荐
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
Mar 28 PHP
PHP提取中文首字母
Apr 09 PHP
PHP 开源AJAX框架14种
Aug 24 PHP
PHP中foreach循环中使用引用要注意的地方
Jan 02 PHP
php循环创建目录示例分享(php创建多级目录)
Mar 04 PHP
使用PHP实现阻止用户上传成人照片或者裸照
Dec 25 PHP
PHP浮点数精度问题汇总
May 13 PHP
分享php分页的功能模块
Jun 16 PHP
PHP简单实现无限级分类的方法
May 13 PHP
PHP控制前台弹出对话框的实现方法
Aug 21 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
May 02 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.ini 配置文件的深入解析
2013/06/17 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
ucenter通信原理分析
2015/01/09 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
基于JavaScript实现移除(删除)数组中指定元素
2016/01/04 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
Python比较两个图片相似度的方法
2015/03/13 Python
在Python的循环体中使用else语句的方法
2015/03/30 Python
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
python类继承与子类实例初始化用法分析
2015/04/17 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
python将字符串转换成json的方法小结
2019/07/09 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
个人找工作的自我评价
2013/10/17 职场文书
企业整改报告范文
2014/11/08 职场文书
护士自我推荐信范文
2015/03/24 职场文书
总经理年会致辞
2015/07/29 职场文书
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫