Definisi dan Penggunaan
Kata kunci clone
digunakan untuk membuat salinan objek.
Jika salah satu properti adalah referensi ke variabel atau objek lain, maka hanya referensi yang disalin. Objek selalu diteruskan oleh referensi, jadi jika objek asli memiliki objek lain di propertinya, salinannya akan mengarah ke objek yang sama. Perilaku ini bisa diubah dengan membuat metode __clone()
di kelas.
Contoh
Buat salinan objek:
<?php class MyClass { public $color; public $amount; } $obj = new MyClass(); $obj->color = "red"; $obj->amount = 5; $copy = clone $obj; print_r($copy); ?> /* Output : MyClass Object ( [color] => red [amount] => 5 )
Contoh Lain
Contoh
Buat salinan objek yang memiliki referensi:
<?php class MyClass { public $amount; } // Buat objek dengan referensi $value = 5; $obj = new MyClass(); $obj->amount = &$value; // clone objek $copy = clone $obj; // Ubah nilai di objek asli $obj->amount = 6; // Salinan diubah print_r($copy); ?> /* Output : MyClass Object ( [amount] => 6 )
Contoh
Gunakan metode __clone () untuk merusak referensi dalam objek yang disalin:
<?php class MyClass { public $amount; public function __clone() { $value = $this->amount; unset($this->amount); // Hapus referensi break $this->amount = $value; } } // Buat objek dengan referensi $value = 5; $obj = new MyClass(); $obj->amount = &$value; // Clone objek $copy = clone $obj; // Ubah nilai di objek asli $obj->amount = 6; // Salinan tidak diubah print_r($copy); ?> /* Output : MyClass Object ( [amount] => 5 )