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.Jadi ia sepatutnya kelihatan seperti ini: