深入讨论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
<