PHP clone

时间:2023-03-10 06:45:13
PHP  clone

PHP  clone

   
定义一个电视类
class Tv{public $width=100;public function setWidth($v){$this->width = $v;    }}
$a = new Tv();
$b = $a
$a->setWidth(200);
echo $b->width;        //结果是200
//原因,php对象的复制(赋值)是属于引用类型的
//要写解决上面的问题,操作变量$a的width使$b不受影响可以按下面的方法
$a = new Tv();
$b = clone $a;
$a->setWidth(200);
echo $b->width;        //结果是100
使用clone方法复制时,如果希望某些属性不被复制过去,可以使用__clone()方法
class Tv{public $width=100;public function setWidth($v){$this->width = $v;    }//被复制是调用,有clone关键词public function __clone(){$this->width = 0;    }}
$a = new Tv();
$b = clone $a;
$a->setWidth(200);
echo $b->width;        //结果是0