Penafian. Maksud dari posting blog ini bukan agar Anda berhenti menggunakan kata kunci clone tetapi untuk meningkatkan kesadaran akan perilakunya karena IMO dalam dokumentasi tidak begitu jelas Show Seperti yang Anda ketahui, PHP memiliki kata kunci tiruan terkenal yang menyalin semua properti objek secara dangkal. Jadi di balik tudung apa yang dilakukannya adalah membuat Objek baru dengan nilai yang sama persis dari properti objek tersebut – kecuali jika Anda mengubah perilakunya dengan mengimplementasikan fungsi Perilaku ini tampaknya seperti yang kami harapkan. Namun, ini mungkin memberikan hasil yang "aneh" jika objek yang Anda kloning berisi properti yang merupakan objek. Ayo lihat
Jadi ini adalah dua kelas sederhana, satu untuk Mobil saya, satu lagi untuk Modelnya. Jadi sekarang mari kita lihat apa yang terjadi saat kita membuat Mobil baru, mengkloningnya, dan mengubah nama model salah satunya
Apakah Anda mengharapkan hasil ini? . Jadi apa yang terjadi di sini? . Jadi bagaimana kita bisa menyelesaikan ini? . Lib DeepCopy adalah yang kami butuhkan. Apa yang dilakukan DeepCopy adalah secara rekursif melintasi semua properti objek dan mengkloningnya untuk memastikan bahwa setiap objek di dalam objek yang Anda kloning memiliki instance baru sehingga ia akan memiliki ID objek baru. Mari kita lihat representasi visual tentang cara kerja clone dan DeepCopy Bagaimana Anda menyalin data tanpa referensi?Anda cukup menggunakan copy = Object. buat(Obj asli); . mengurai (JSON. merangkai(Obj asli)); . . javascript obyek Bagaimana cara mengkloning variabel di PHP?Kata kunci tiruan PHP . Membuat salinan objek. kelas Kelasku { publik $warna; . Buat salinan objek yang memiliki referensi. kelas Kelasku { publik $jumlah; . Gunakan metode __clone() untuk memecahkan referensi dalam objek yang disalin. kelas Kelasku { publik $jumlah; Bagaimana cara menyalin objek dalam PHP?Menggunakan operator penugasan untuk menyalin objek
. using the method __clone().
Bagaimana cara menyalin string di PHP?PHP copy() Fungsi
. echo copy("source. txt","target. txt"); |