第五节 克隆 [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函数
Dec 06 PHP
PHP教程 预定义变量
Oct 23 PHP
php+iframe实现隐藏无刷新上传文件
Feb 10 PHP
php无限分类且支持输出树状图的详细介绍
Jun 19 PHP
修改ThinkPHP缓存为Memcache的方法
Jun 25 PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
Yii基于数组和对象的Model查询技巧实例详解
Dec 28 PHP
PHP生成各种常见验证码和Ajax验证过程
Jan 10 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
Dec 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之字符串变相相减的代码
2007/03/19 PHP
PHP array 的加法操作代码
2010/07/24 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
制作特殊字的脚本
2006/06/26 Javascript
jquery 新浪网易的评论块制作
2010/07/01 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
2018/08/27 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
vue请求数据的三种方式
2020/03/04 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
JavaScript原生数组函数实例汇总
2020/10/14 Javascript
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
python实现顺序表的简单代码
2018/09/28 Python
Django 缓存配置Redis使用详解
2019/07/23 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
Python实现数字的格式化输出
2020/08/01 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
python自动化测试三部曲之request+django实现接口测试
2020/10/07 Python
2014国培学习感言
2014/03/05 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书