php中,对象的赋值和传递都是通过引用进行的。但是有时候我们需要获得一个对象的副本,这个时候就可以用到关键字clone,与之对应的就是魔术方法__clone。
class test{
private $name;
private $age;
public function __construct($name,$age){
$this->name = $name;
$this->age = $age;
}
public function funs(){
return $this->name.'||'.$this->age;
}
function __clone (){
return "that is clone";
//exit('can not clone'); //限制克隆
}
}
$ob = new test('chuke',20);
$ob2 = clone $ob; //会调用__clone 方法
//$ob2 = $ob; //直接赋值方式 变量指向的是同一对象 不会调用魔术方法
echo $ob2->funs();
通过__clone方法就可以限制克隆。