PHP 5.0对象模型深度探索之对象复制


Posted in PHP onMarch 27, 2008

默认地,用__clone方法将建立一个与原对象拥有相同属性和方法的对象. 如果你想在克隆时改变默认的内容,你要在__clone中覆写(属性或方法)。

克隆的方法可以没有参数,但它同时包含this和that指针(that指向被复制的对象)。如果你选择克隆自己,你要小心复制任何你要你的对象包含的信息,从that到this,如果你用__clone来复制,PHP不会执行任何隐性的复制,下面显示了一个用系列序数来自动化对象的例子:

class ObjectTracker //对象跟踪器  
{  
 private static $nextSerial = 0;  
 private $id;  
 private $name;   function __construct($name) //构造函数  
 {  

$this->name = $name;  

$this->id = ++self::$nextSerial;  
 }  
 function __clone() //克隆  
 {  

$this->name = "Clone of $this->name";  

$this->id = ++self::$nextSerial;  
 }  
 function getId() //获取id属性的值  
 {  

return($this->id);  
 }  
 function getName() //获取name属性的值  
 {  

return($this->name);  
 }  
}  
$ot = new ObjectTracker("Zeev's Object");  
$ot2 = clone$ot;  
//输出: 1 Zeev's Object  
print($ot->getId() . " " . $ot->getName() . "");  
//输出: 2 Clone of Zeev's Object  
print($ot2->getId() . " " . $ot2->getName() . "");  
?>

PHP 相关文章推荐
PHP邮件专题
Oct 09 PHP
MayFish PHP的MVC架构的开发框架
Aug 13 PHP
php分页思路以及在ZF中的使用
May 30 PHP
php eval函数用法总结
Oct 31 PHP
php获取随机数组列表的方法
Nov 13 PHP
从wamp到xampp的升级之路
Apr 08 PHP
PHP验证信用卡卡号是否正确函数
May 27 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
Jan 17 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
Dec 02 PHP
PHP 5.0对象模型深度探索之属性和方法
Mar 27 #PHP
php简单静态页生成过程
Mar 27 #PHP
优化PHP代码的53条建议
Mar 27 #PHP
PHP连接access数据库
Mar 27 #PHP
某大型网络公司应聘时的笔试题目附答案
Mar 27 #PHP
php 无限极分类
Mar 27 #PHP
mysql时区问题
Mar 26 #PHP
You might like
PHP+MYSQL的文章管理系统(二)
2006/10/09 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
用python做游戏的细节详解
2019/06/25 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
医学类导师推荐信范文
2013/11/19 职场文书
售后专员岗位职责
2013/12/08 职场文书
超市中秋节促销方案
2014/03/21 职场文书
本科应届生自荐信
2014/06/29 职场文书
先进班集体事迹材料
2014/12/25 职场文书
鲁迅故里导游词
2015/02/05 职场文书
优秀党员个人总结
2015/02/14 职场文书
联欢会开场白
2015/06/01 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
在python中实现导入一个需要传参的模块
2021/05/12 Python