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? ?
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" // }
Pada ketika ini saya menjangkakan $x
menjadi $obj
, tetapi sudah tentu tidak. Adakah terdapat cara mudah untuk melakukan ini atau adakah saya perlu menulis kod seperti ini
Untuk menyalin objek anda perlu menggunakanKlon 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.