第五节 克隆 [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 相关文章推荐
一个SQL管理员的web接口
Oct 09 PHP
用PHP动态生成虚拟现实VRML网页
Oct 09 PHP
php 删除cookie和浏览器重定向
Mar 16 PHP
PHP中全面阻止SQL注入式攻击分析小结
Jan 30 PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 PHP
使用PHP Socket 编程模拟Http post和get请求
Nov 25 PHP
php实现的通用图片处理类
Mar 24 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 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中文繁体和简体相互转换的方法
2015/03/21 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
jupyter notebook 参数传递给shell命令行实例
2020/04/10 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
房产代理公证处委托书
2014/04/04 职场文书
竞聘自述材料
2014/08/25 职场文书
名人演讲稿范文
2014/09/16 职场文书
感谢信范文大全
2015/01/23 职场文书
介绍信样本
2015/01/31 职场文书
个人政治思想总结
2015/03/05 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
2015年派出所工作总结
2015/04/24 职场文书
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL