日期:2014-05-17  浏览次数:20524 次

深入讨论PHP5对象复制技术
对象复制的由来
为什么对象会有“复制”这个概念,这与PHP5中对象的传值方式是密切相关的,让我们看看下面这段简单的代码

PHP代码

    * /**
    * * 电视机类
    * */
    * class Television  
    * { 
    *     /**
    *      * 屏幕高度
    *      */
    *     protected
      $_screenLength = 300; 
    *      
    *     /**
    *      * 屏幕宽度
    *      */
    *     protected
      $_screenHight  = 200; 
    *      
    *     /**
    *      * 电视机外观颜色
    *      */
    *     protected
      $_color        = 'black'; 
    *      
    *     /**
    *      * 返回电视外观颜色
    *      */
    *     public
      function getColor() 
    *     { 
    *         return
      $this->_color; 
    *     } 
    *      
    *     /**
    *      * 设置电视机外观颜色
    *      */
    *     public
      function setColor($color) 
    *     { 
    *         $this->_color = (string)$color; 
    *         return
      $this; 
    *     } 
    * } 
    *  
    * $tv1 = new Television(); 
    * $tv2 = $tv1; 


这段代码定义了一个电视机的类 Television , $tv1为一个电视机的实例,然后我们按照普通的变量赋值方式将$tv1的值赋给$t2。那么现在我们拥有两台电视机$tv1和$tv2了,真的是这样的吗?我们来测试一下。

PHP代码

    * echo
      'color of tv1 is: ' . $tv1->getColor();//tv1的颜色是black
    * echo
      '<br>'; 
    * echo
      'color of tv2 is: ' . $tv2->getColor();//tv2的颜色是black
    * echo
      '<br>'; 
    *  
    * //把tv2涂成白色
    * $tv2->setColor('white'); 
    *  
    * echo
      'color of tv2 is: ' . $tv2->getColor();//tv2的颜色是white
    * echo
      '<br>'; 
    * echo
      'color of tv1 is: ' . $tv1->getColor();//tv1的颜色是white
<