Kloning objek membuat salinan objek. Salinan objek dibuat dengan menggunakan kata kunci klon dan method __clone () tidak dapat dipanggil secara langsung. Artinya, objek yang terkandung dari objek yang disalin tidak disalin. Jika Anda menginginkan salinan yang dalam, maka Anda perlu mendefinisikan method __clone ().
Copy Objek dengan Assignment
Dalam script di bawah ini, saya mencoba untuk mengcopy objek dengan menggunakan operator Assignment. Jadi yang terjadi adalah, instance hanyalah pointer ke instance lama. saya dapat memverifikasi itu dengan memperbarui nilai propertinya. Ketika nilai-nilai instance baru diperbarui akan tercermin dalam instance lama. Jadi, jenis salinan ini hanyalah referensi rangkap ke instance asli. Secara teknis ini bukan salinan, tetapi hanya menetapkan referensi objek ke objek lain.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php classAnimals { public$name; public$category; } //Creating instance of Animals class $objAnimals=newAnimals(); //setting properties $objAnimals->name="Lion"; $objAnimals->category="Wild Animal"; //Copying object $objCopied=$objAnimals; $objCopied->name= "Cat"; $objCopied->category="Pet Animal" print_r($objAnimals); print_r($objCopied); ?> |
Ketika saya mengubah $ objCopied mempengaruhi $ objAnimal. Outputnya adalah,
Values of object$objAnimals: Animals Object ( [name]=>Cat [category]=>Pet Animal ) Values of Copied object$objCopied: Animals Object ( [name]=>Cat [category] =>Pet Animal ) |
Object Copy by clone
Dalam contoh di bawah ini, saya menyalin objek dengan menggunakan kata kunci klon PHP. Method klon PHP melakukan salinan karenanya, setiap perubahan yang dilakukan pada objek yang dikloning tidak akan mempengaruhi objek asli.
__clone adalah metode magic dalam PHP. Metode magic sudah ditentukan sebelumnya dalam PHP dan dimulai dengan “__” (garis bawah ganda). Mereka dieksekusi sebagai tanggapan terhadap beberapa event di PHP.
<?php //Creating instance of Animals class $objAnimals=newAnimals(); //Assigning values $objAnimals->name="Lion"; $objAnimals->category= "Wild Animal"; //Cloning the original object $objCloned=clone$objAnimals; $objCloned->name="Elephant"; $objCloned->category="Wild Animal"; print_r($objAnimals); print_r($objCloned); ?> |
Sekarang kita bisa melihat perbedaan dalam output kode ini.
alues of object$objAnimals: Animals Object ( [name]=>Lion [category]=>Wild Animal ) Values of Cloned object$objCopied: Animals Object ( [name]=>Elephant [category] =>Wild Animal ) |
Itulah tadi pembahasan saya tentang Cara Menggunakan PHP Object Cloning semoga bermanfaat.