Bagaimana untuk menyalin objek tanpa rujukan?
P粉805922437
2023-08-24 10:51:49
<p>Adalah didokumentasikan dengan baik bahawa objek PHP5 OOP diluluskan secara rujukan secara lalai. Jika ini adalah lalai, nampaknya saya ada cara bukan lalai untuk menyalin tanpa rujukan, bagaimana pula? ? </p>
<pre class="brush:php;toolbar:false;">function refObj($object){
foreach($objek sebagai &$o){
$o = 'ini akan bertukar kepada ' $o;
}
pulangkan $objek;
}
$obj = StdClass baharu;
$obj->x = 'x';
$obj->y = 'y';
$x = $obj;
print_r($x)
// object(stdClass)#1 (3) {
// ["x"]=>
// ["y"]=>
// }
// $obj = refObj($obj); // tidak perlu melakukan ini kerana
refObj($obj); // $obj diluluskan dengan rujukan
print_r($x)
// object(stdClass)#1 (3) {
// ["x"]=> rentetan(1) "ini akan bertukar kepada x"
// ["y"]=> rentetan(1) "ini akan bertukar kepada y"
// }</pre>
<p>Pada ketika ini saya menjangkakan <code>$x</code> menjadi <code>$obj</code>, tetapi sudah tentu tidak. Adakah terdapat cara mudah untuk melakukan ini atau adakah saya perlu menulis kod seperti ini</p>
Untuk menyalin objek anda perlu menggunakan Klon Objek一个>.
Untuk melakukan ini dalam contoh anda:
Sila ambil perhatian bahawa objek boleh menggunakan
__clone()
定义自己的克隆
gelagat, yang mungkin memberi anda gelagat yang tidak dijangka, jadi ingat perkara ini.Jadi ia sepatutnya kelihatan seperti ini: