PHP:类的赋值和克隆的区别
类的赋值其实就和变量的引用差不多是一个意思,都是直接指向类的地址。类的克隆其实就和变量的赋值是差不多一个意思,互不干扰。
赋值
<?php
class test{
public $a=1;
public function plus(){
$this->a=$this->a+1; //对变量完成自增操作
}
public function get(){
return $this->a; //取出变量
}
}
$test =new test();
$test->plus();
echo $test->get(); //输出2
$test1=$test;
$test1->plus();
echo $test->get(); //输出3
echo $test1->get(); //输出3
?>
可以发现test和test1都是对一个类进行操作的,可以说是直接指向同一个地址。
克隆
<?php
class test{
public $a=1;
public function plus(){
$this->a=$this->a+1; //对变量完成自增操作
}
public function get(){
return $this->a; //取出变量
}
public function __clone() //当使用关键字clone会自然调用这个函数
{
}
}
$test=new test();
$test1=clone $test; //克隆一个类
$test->plus();
echo $test->get(); //输出2
echo $test1->get(); //输出1
可以发现,克隆后的两个类是互不干扰的