請大神指教一下!
<?php
class?Car?{
????public?$name?=?'car';
????
????public?function?__clone()?{
????????$obj?=?new?Car();
????????$obj->name?=?$this->name;
????}
}
$a?=?new?Car();
$a->name?=?'new?car';
$b?=?clone?$a;
if?($a?==?$b)?echo?'==';???//true
if?($a?===?$b)?echo?'===';?//false
$str?=?serialize($a);?//對象序列化成字符串
echo?$str.'<br>';
$c?=?unserialize($str);?//反序列化為對象
var_dump($c);中間的
? ? ? ?$obj = new Car();
? ? ? ?$obj->name = $this->name;
? ? 這兩段有啥用呀,去掉再運行沒有什么不同?
2016-01-31
2021-04-05
/*備注:clone函數默認的clone操作都是淺拷貝,共用一塊內存。
設計初衷是用clone函數實現新創建的對象和舊對象互不影響。
因此,需要在__clone里面重新創建一個Car類的對象$c,然后再操作屬性。
深拷貝:賦值時開辟新內存,對其中一個作出改變,不會影響另一個
淺拷貝:賦值時共用一個內存,也就是引用傳遞。
相當于取了一個別名,對其中一個修改,會影響另一個*/