第五节--克隆

所属分类: 网络编程 / PHP编程 阅读数: 1782
收藏 0 赞 0 分享
/*
+-------------------------------------------------------------------------------+
| = 本文为Haohappy读<<Core PHP Programming>> 
| = 中Classes and Objects一章的笔记 
| = 翻译为主+个人心得 
| = 为避免可能发生的不必要的麻烦请勿转载,谢谢 
| = 欢迎批评指正,希望和所有PHP爱好者共同进步! 
| = PHP5研究中心: http://blog.csdn.net/haohappy2004
+-------------------------------------------------------------------------------+
*/

第五节--克隆

PHP5中的对象模型通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 . 为了这样的目的,PHP定义了一个特殊的方法,称为__clone. 像__construct和__destruct一样,前面有两个下划线.

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

克隆的方法可以没有参数,但它同时包含this和that指针(that指向被复制的对象). 如果你选择克隆自己,你要小心复制任何你要你的对象包含的信息,从that到this. 如果你用__clone来复制. PHP不会执行任何隐性的复制, 

下面显示了一个用系列序数来自动化对象的例子:

复制代码 代码如下:
<?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 $that->name";  
           $this->id = ++self::$nextSerial;  
       }  

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

       function getName() //获取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>");  
?>  
更多精彩内容其他人还在看

浅谈Laravel队列实现原理解决问题记录

本篇文章主要介绍了浅谈Laravel队列实现原理解决问题记录,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

php创建多级目录完整封装类操作方法

下面小编就为大家带来一篇php创建多级目录完整封装类操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

cookie的优化与购物车实例

下面小编就为大家带来一篇cookie的优化与购物车实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详谈PHP基础与JS操作的区别(必看篇)

下面小编就为大家带来一篇详谈PHP基础与JS操作的区别(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Laravel中利用队列发送邮件的方法示例

在日常利用laravel开发博客中,经常遇到发送邮件的功能,发现网上这方面的资料较少,所以下面这篇文章主要给大家介绍了关于Laravel中队列发送邮件的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
收藏 0 赞 0 分享

Laravel中重写资源路由自定义URL的实现方法

这篇文章主要给大家介绍了关于Laravel中重写资源路由自定义URL的实现方法,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP中常见的错误与异常处理总结大全

任何程序员在开发时都可能遇到过一些失误,或其他原因造成错误的发生。当然,用户如果不愿意或不遵循应用程序的约束,也会在使用时引起一些错误发生。下面这篇文章主要给大家介绍了关于PHP中常见的错误与异常处理,需要的朋友可以参考下,
收藏 0 赞 0 分享

centos 7系统下安装laravel运行环境的步骤详解

Laravel框架对于开发网页应用来说是一个绝好的的工具,最近正好又在学习linux系统,所以下面这篇文章主要给大家介绍了在centos 7系统下安装laravel运行环境的步骤,需要的朋友可以参考借鉴,下面跟着小编来一起学习学习吧。
收藏 0 赞 0 分享

分享个简单易懂且非常有用的laravel事件

这篇文章主要给大家介绍了一个简单易懂并且非常有用的laravel事件,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
收藏 0 赞 0 分享

PHP编程之微信公众平台企业号验证接口示例【回调操作】

这篇文章主要介绍了PHP编程之微信公众平台企业号验证接口,是通过回调操作实现的企业号验证功能接口,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多