請大神指教一下!
<?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函數(shù)默認的clone操作都是淺拷貝,共用一塊內(nèi)存。
設計初衷是用clone函數(shù)實現(xiàn)新創(chuàng)建的對象和舊對象互不影響。
因此,需要在__clone里面重新創(chuàng)建一個Car類的對象$c,然后再操作屬性。
深拷貝:賦值時開辟新內(nèi)存,對其中一個作出改變,不會影響另一個
淺拷貝:賦值時共用一個內(nèi)存,也就是引用傳遞。
相當于取了一個別名,對其中一個修改,會影響另一個*/