347 of 410 menu

Metode __clone

Metode __clone dipanggil secara otomatis saat menggunakan operator clone. Ini memungkinkan untuk mendefinisikan logika penyalinan objek sendiri. Secara default, PHP menjalankan penyalinan dangkal (shallow copy) dari semua properti objek. Metode __clone berguna ketika perlu mengimplementasikan penyalinan mendalam (deep copy) atau mengubah perilaku saat pengkloningan.

Sintaks

public function __clone(): void

Contoh

Mari implementasikan kloning objek dasar:

<?php class User { public $name; public function __construct($name) { $this->name = $name; } public function __clone() { echo 'Objek telah dikloning'; } } $user1 = new User('John'); $user2 = clone $user1; ?>

Hasil eksekusi kode:

'Objek telah dikloning'

Contoh

Mari implementasikan penyalinan mendalam (deep copy) pada objek dengan objek bersarang:

<?php class Address { public $city; public function __construct($city) { $this->city = $city; } } class User { public $name; public $address; public function __construct($name, $city) { $this->name = $name; $this->address = new Address($city); } public function __clone() { $this->address = clone $this->address; } } $user1 = new User('John', 'New York'); $user2 = clone $user1; $user2->address->city = 'Boston'; echo $user1->address->city; ?>

Hasil eksekusi kode:

'New York'

Contoh

Mari tambahkan pengidentifikasi unik saat pengkloningan:

<?php class Product { public $id; public $name; public function __construct($name) { $this->id = uniqid(); $this->name = $name; } public function __clone() { $this->id = uniqid(); } } $product1 = new Product('Laptop'); $product2 = clone $product1; echo $product1->id . ' ' . $product2->id; ?>

Hasil eksekusi kode (contoh):

'5f1a2b3c 5f1a2b3d'

Lihat Juga

Indonesia
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan cookie untuk operasi situs, analitik, dan personalisasi. Pemrosesan data dilakukan sesuai dengan Kebijakan Privasi.
terima semua atur tolak