第五节 克隆 [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 相关文章推荐
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
Jul 01 PHP
基于MySQL分区性能的详细介绍
May 02 PHP
深入理解PHP中的Session和Cookie
Jun 21 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
Jul 22 PHP
async和DOM Script文件加载比较
Jul 20 PHP
php提取字符串中网站url地址的方法
Dec 03 PHP
PHP通过串口实现发送短信
Jul 08 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
9个比较实用的php代码片段
Mar 15 PHP
PHP7标量类型declare用法实例分析
Sep 26 PHP
PHP实现微信小程序人脸识别刷脸登录功能
May 24 PHP
PDO::errorInfo讲解
Jan 28 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
天津市收音机工业发展史
2021/03/04 无线电
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
Zend Studio使用技巧两则
2016/04/01 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
srcElement表格样式
2006/09/03 Javascript
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
公司授权委托书范本
2014/09/18 职场文书
法人身份证明书
2014/10/08 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
博士论文答辩开场白
2015/06/01 职场文书
总结会主持词
2015/07/02 职场文书
golang中的并发和并行
2021/05/08 Golang
用JS实现飞机大战小游戏
2021/06/09 Javascript
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL