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 相关文章推荐
IIS安装Apache伪静态插件的具体操作图文
Jul 01 PHP
web server使用php生成web页面的三种方法总结
Oct 28 PHP
php中PDO方式实现数据库的增删改查
May 17 PHP
微信公众号开发之语音消息识别php代码
Aug 08 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
PHP多进程编程之僵尸进程问题的理解
Oct 15 PHP
使用PHPExcel导出Excel表
Sep 08 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 PHP
laravel-admin 实现在指定的相册下添加照片
Oct 21 PHP
Laravel定时任务的每秒执行代码
Oct 22 PHP
关于PHP5.6+版本“No input file specified”问题的解决
Dec 11 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
python with statement 进行文件操作指南
2014/08/22 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
WxPython实现无边框界面
2019/11/18 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
Python networkx包的实现
2020/02/14 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
python构造IP报文实例
2020/05/05 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
2020/06/08 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
const和static readonly区别
2013/05/20 面试题
《童年的发现》教学反思
2014/02/14 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
医德考评自我评价
2014/09/14 职场文书
群众路线领导班子整改方案
2014/10/25 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
电子表的操作介绍说明书
2019/10/28 职场文书
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server