Bag. 8 : Pengertian Constructor dan Destructor
Pengertian Constructor dalam OOP
Constructor adalah method khusus yang akan dijalankan secara
otomatis pada saat sebuah objek dibuat (instansiasi), yakni ketika perintah
“new” dijalankan.
Constructor biasa digunakan untuk membuat proses awal dalam
mempersiapkan objek, seperti memberi nilai awal kepada property, memanggil
method internal dan beberapa proses lain yang digunakan untuk mempersiapkan objek.
Dalam PHP, constructor dibuat menggunakan method __construct().
Pengertian
Destructor dalam OOP
Destructor adalah method khusus yang dijalankan secara otomatis
pada saat sebuah objek dihapus. Di dalam PHP, seluruh objek sebanarnya sudah
otomatis dihapus ketika halaman PHP selesai diproses. Tetapi kita juga dapat
menghapus objek secara manual.
Destructor biasanya dipakai untuk membersihkan beberapa variabel,
atau menjalankan proses tertentu sebelum objek dihapus.
Dalam PHP, destructor dibuat menggunakan method __destruct().
PHP memiliki fitur penghapusan objek massal yang dikenal dengan
Garbage Collection. Fitur garbage collection ini akan menghapus seluruh objek
secara otomatis ketika halaman PHP selesai di eksekusi, sehingga akan memanggil
method __destructor dari seluruh objek.
Namun PHP menyediakan cara jika kita ingin menghapus objek sebelum
mekanisme ini berjalan, yaitu menggunakan fungsi unset() atau mengisi variabel
objek dengan nilai null. Kita akan melihat contoh penggunaannya dengan contoh
kode program sesaat lagi.
Cara
Penggunaan Destructor dan Constructor dalam PHP
Berikut adalah contoh penggunaan constructor dan destructor dalam
kode program PHP:
<?php
//
buat class laptop
class
laptop {
private $pemilik = "Andi";
private $merk = "Lenovo";
public function __construct(){
echo "Ini berasal dari Constructor
Laptop";
}
public function hidupkan_laptop(){
return "Hidupkan Laptop
$this->merk punya $this->pemilik";
}
public function __destruct(){
echo "Ini berasal dari Destructor
Laptop";
}
}
//
buat objek dari class laptop (instansiasi)
$laptop_andi=
new laptop();
echo
"<br />";
echo
$laptop_andi->hidupkan_laptop();
echo
"<br />";
?>
Dalam contoh ini saya membuat class laptop dengan 3 method:
Method __construct() merupakan constructor dari class laptop.
Method ini akan dipanggil secara otomatis ketika class laptop di instansiasi.
Method hidupkan_laptop() merupakan method biasa yang akan
menampilkan hasil string. Untuk menggunakan method ini, kita memanggilnya dari
objek.
Method ketiga adalah __destruct() yang merupakan destructor dari
class laptop. Method ini akan dipanggil saat objek dihapus.
Setelah pendefinisian class, saya membuat objek $laptop_andi, dan
memanggil method hidupkan_laptop(). Berikut adalah hasil yang didapat:
Ini
berasal dari Constructor Laptop
Hidupkan
Laptop Lenovo punya Andi
Ini
berasal dari destructor Laptop
Seperti yang terlihat, method __construct() dan __destruct()
secara otomatis dipanggil saat objek dibuat dan saat objek dihapus. Untuk
mencoba menghapus objek $laptop_andi secara manual, kita bisa menggunakan
fungsi unset() sebagai berikut:
<?php
//
buat class laptop
class
laptop {
private $pemilik = "Andi";
private $merk = "Lenovo";
public function __construct(){
echo "Ini berasal dari Constructor
Laptop";
}
public function hidupkan_laptop(){
return "Hidupkan Laptop
$this->merk punya $this->pemilik";
}
public function __destruct(){
echo "Ini berasal dari Destructor
Laptop";
}
}
//
buat objek dari class laptop (instansiasi)
$laptop_andi=
new laptop();
echo
"<br />";
echo
$laptop_andi->hidupkan_laptop();
echo
"<br />";
//
hapus objek $laptop_andi
unset($laptop_andi);
echo
"<br />";
echo
"Objek Telah Dihancurkan";
?>
Dengan menjalankan kode diatas, berikut adalah hasil yang didapat:
Ini
berasal dari Constructor Laptop
Hidupkan
Laptop Lenovo punya Andi
Ini
berasal dari Destructor Laptop
Objek
Telah Dihancurkan
Setelah memanggil method $laptop_andi->hidupkan_laptop(), saya
menghapus objek $laptop_andi secara manual menggunakan fungsi
unset($laptop_andi).
Untuk membuktikan bahwa destructor $laptop_andi sudah dijalankan,
saya menambahkan perintah echo “Objek Telah Dihancurkan” diakhir kode program.
Sehingga kita bisa lihat bahwa destructor objek $laptop andi di jalankan
sebelum dihapus otomatis oleh PHP.
Silahkan anda coba hapus perintah unset($laptop_andi), maka string
“Objek Telah Dihancurkan“ akan tampil sebelum destructor objek $laptop_andi.
Anda juga bisa mengganti perintah unset($laptop_andi) dengan
$laptop_andi=null. Kedua perintah ini akan menghapus objek $laptop_andi dan
men-trigger pemanggilan destructor.
Sebagai contoh terakhir dalam tutorial kali ini, saya akan membuat
contoh constructor yang sering digunakan untuk membuat objek dengan nilai awal.
Konsep ini sering digunakan dalam pemrograman objek. Berikut adalah contoh
penggunaannya:
<?php
//
buat class laptop
class
laptop {
private $pemilik;
private $merk;
// constructor sebagai pembuat nilai awal
public function __construct($pemilik, $merk)
{
$this->pemilik = $pemilik;
$this->merk = $merk;
}
public function hidupkan_laptop() {
return "Hidupkan Laptop
$this->merk punya $this->pemilik";
}
}
//
buat objek dari class laptop (instansiasi)
$laptop_andi=
new laptop("Andi", "Lenovo");
echo
$laptop_andi->hidupkan_laptop();
echo
"<br />";
$laptop_anto=
new laptop("Anto", "Acer");
echo
$laptop_anto->hidupkan_laptop();
?>
Pada kode diatas saya menggunakan constructor sebagai pembuat
nilai awal objek. Method constructor menerima 2 buah argumen yang kemudian
disimpan ke dalam property internal objek.
Berikut adalah hasil yang didapat dari kode program di atas:
Hidupkan
Laptop Lenovo punya Andi
Hidupkan
Laptop Acer punya Anto
Sebagai tambahan, di dalam PHP constructor dan destructor harus
memiliki hak akses public. Jika kita mengubah hak akses constructor atau
destructor menjadi protected atau private, PHP akan mengeluarkan pesan error
berikut:
Fatal
error: Call to private laptop::__construct()

Post a Comment