您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > PHP >

深入讨论PHP5对象复制技术(7)

来源:未知 责任编辑:责任编辑 发表时间:2014-01-25 11:34 点击:
  •     {  
  •         return $this->_identity;      
  •     }  
  •       
  •     /** 
  •      * 设置电视机编号 
  •      */  
  •     public function setIdentity($id)  
  •     {  
  •         $this->_identity = (int)$id;  
  •         return $this;  
  •     }  
  •       
  •     public function __clone()  
  •     {  
  •         $this->setIdentity(0);    
  •     }  
  • }  
  •   
  •   
  • /** 
  •  * 遥控器类 
  •  */  
  • class Telecontrol   
  • {  
  •   
  • }  
  •  

    下面复制这样的一个电视机对象并且观察电视机的遥控器对象。

     

    PHP代码

     

    1. $tv1 = new Television();  
    2. $tv2 = clone $tv1;  
    3.   
    4. $contr1 = $tv1->getControl(); //获取tv1的遥控器contr1  
    5. $contr2 = $tv2->getControl(); //获取tv2的遥控器contr2  
    6. echo $tv1;    //tv1的object id 为 #1  
    7. echo '<br>';  
    8. echo $contr1; //contr1的object id 为#2  
    9. echo '<br>';   
    10. echo $tv2;    //tv2的object id 为 #3  
    11. echo '<br>';  
    12. echo $contr2; //contr2的object id 为#2  

     

    经过复制之后,我们查看对象id,通过clone操作从tv1复制出了tv2,tv1和tv2的对象id分别是1和3,这表示tv1和tv2是引用两个不同的电视机对象,这符合clone操作的结果。然后我们分别获取了tv1的遥控器对象contr1和tv2的遥控器对象contr2,通过查看它们的对象id我们发现contr1和contr2的对象id都是2,这表明它们是到同一个对象的引用,也就是说我们虽然从tv1复制出tv2,但是遥控器并没有被复制,每台电视机都应该配有一个遥控器,而这里tv2和tv1共用一个遥控器,这显然是不合常理的。

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • PHP测试
    • 十天学会php之第六天
    • 几种显示数据的方法的比较
    • 使用xmlhttp为网站增加域名查询功能
    • PHP+MYSQL+Javascript数据库查询结果的动态显示
    • 查找数组中指定键名的值
    • 用redis实现跨服务器session
    • 用新浪微博接口发送图片微博失败的原因
    • smarty局部缓存技术[源码分析]
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1