Bagaimana untuk menyalin objek tanpa rujukan?
P粉805922437
P粉805922437 2023-08-24 10:51:49
0
2
369

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

P粉805922437
P粉805922437

membalas semua (2)
P粉038161873

Untuk menyalin objek anda perlu menggunakanKlon Objek一个>.

Untuk melakukan ini dalam contoh anda:

$x = clone $obj;

Sila ambil perhatian bahawa objek boleh menggunakan__clone()定义自己的克隆gelagat, yang mungkin memberi anda gelagat yang tidak dijangka, jadi ingat perkara ini.

    P粉713846879
    
              

    Jadi ia sepatutnya kelihatan seperti ini:

    x = 'x'; $obj->y = 'y'; $x = clone($obj); print_r($x) refObj($obj); // $obj is passed by reference print_r($x)
      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!