网站首页站长博客下载中心域名交易站长论坛域名主机免费电邮免费域名中文排行排名查询站长书库书籍教程下载
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
学院首页 网络编程 网页设计 图形图象 数 据 库 服 务 器 网络媒体 网络安全 个人专栏 站长CLUB 业界新闻 信息公告
 当前位置:首页 >> 网络编程 >> PHP专区 >> 正文
公告通知
返回上级列表
资料搜索
相关文章
第五节--克隆 -- Classes and Objects in PHP5 [5]
[ 来源:中国站长学院 | 作者:风未起时 | 时间:2005-4-13 21:09:24 | 浏览:人次 ]
收藏到新浪ViVi 收藏到365KEY 收藏到我摘  字号选择〖    〗/ 双击滚屏 单击停止  

第五节--克隆

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>"); 
?> 

[发送给好友]  [打印本页]  [关闭窗口]  [返回顶部]   转载请注明来源:http://edu.chinaz.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
栏目编辑: 设计风 责任编辑: 设计风
原始作者: 风未起时 录入时间: 2005-4-13 21:09:24
信息来源: 中国站长学院 投稿信箱: Edu#chinaz.com
设为首页 - 加入收藏 - 关于我们 - 广告服务 - 版权申明 - 友情链接 - 联系方式 - 总编信箱 - 会员投稿