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
时间: 2025-01-18 10:11:18