第五节 克隆 [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 如何向 MySQL 发送数据
Oct 09 PHP
php db类库进行数据库操作
Mar 19 PHP
php 全局变量范围分析
Aug 07 PHP
PHP swfupload图片上传的实例代码
Sep 30 PHP
php读取csv实现csv文件下载功能
Dec 18 PHP
yii添删改查实例
Nov 16 PHP
php编程每天必学之验证码
Mar 03 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 20 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
Jul 22 PHP
一次项目中Thinkphp绕过禁用函数的实战记录
Nov 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中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
BootStrap前端框架使用方法详解
2020/02/26 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
浅谈Python 对象内存占用
2016/07/15 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
python实现支付宝转账接口
2019/05/07 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
详解用python生成随机数的几种方法
2019/08/04 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
pytorch中的inference使用实例
2020/02/20 Python
python opencv 检测移动物体并截图保存实例
2020/03/10 Python
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
企业治理工作自我评价
2013/09/26 职场文书
幼儿教师自我鉴定
2013/11/02 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
文秘个人求职信范文
2014/04/22 职场文书
责任书范本
2014/08/25 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
Promise面试题详解之控制并发
2021/05/14 面试题
服务器SVN搭建图文安装过程
2022/06/21 Servers