Belajar Pemrograman OOP PHP Part 7 - Belajar Membuat Constructor Dan Destructor Dalam Pemrograman Dasar PHP
Meneruskan panduan Belajar Objek Oriented Programming (OOP) PHP, ini kali kita akan membahas tentang Pengertian Constructor dan Destructor dalam Pemrograman Object, terutamanya OOP PHP.
Pengertian Constructor dalam OOP
Constructor ialah metode khusus yang hendak dijalankan secara automatis di saat sebuah object dibuat (instansiasi), yaitu saat perintah "new" dijalankan.
Constructor biasa dipakai untuk membuat proses awalnya dalam menyiapkan object, seperti memberikan nilai awal ke properti, panggil metode internal dan proses-proses yang lain dipakai untuk menyiapkan object.
Dalam PHP, constructor dibuat memakai metode __construct().
Pengertian Destructor dalam OOP
Destructor ialah metode khusus yang dijalankan secara automatis di saat sebuah object dihapus. Dalam PHP, semua object sebenarnya telah automatis dihapus saat halaman PHP usai diproses. Tapi kita dapat hapus object secara manual.
Destructor umumnya digunakan untuk bersihkan beberapa variabel, atau menjalankan proses tertentu saat sebelum object dihapus.
Dalam PHP, destructor dibuat memakai metode __destruct().
PHP mempunyai feature penghilangan object massal yang dikenal dengan Garbage Collection. Feature garbage collection ini akan hapus semua object secara automatis saat halaman PHP usai dilakukan, hingga bisa memanggil metode __destructor dari semua object. Tetapi PHP menyediakan cara bila kita ingin hapus object saat sebelum proses ini jalan, yakni memakai peranan unset() atau isi variabel object dengan nilai null. Kita akan melihat contoh pemakaiannya dengan contoh code program sesaat lagi
Langkah Pemakaian Destructor dan Constructor dalam PHP
Berikut contoh pemakaian constructor dan destructor dalam code 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 perumpamaan ini saya membuat class laptop dengan 3 metode:
- Metode __construct() sebagai constructor dari class laptop. Metode ini akan dipanggil secara automatis saat class laptop di instansiasi.
- Metode hidupkan_laptop() sebagai metode biasa yang akan tampilkan hasil string. Untuk memakai metode ini, kita memanggilnya dari object.
- Metode ketiga ialah __destruct() yang disebut destructor dari class laptop. Metode ini akan dipanggil saat object dihapus.
Sesudah pendefinisian class, saya membuat object $laptop_andi, dan panggil metode hidupkan_laptop(). Berikut hasil yang didapatkan:
Ini berasal dari Constructor Laptop
Hidupkan Laptop Lenovo punya Andi
Ini berasal dari destructor Laptop
Sama seperti yang terlihat, metode __construct() dan __destruct() secara automatis dipanggil saat object dibuat dan saat object dihapus. Untuk coba hapus object $laptop_andi dengan manual, kita dapat memakai fungsi unset() seperti 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 jalankan code di atas, berikut hasil yang didapatkan:
Ini berasal dari Constructor Laptop
Hidupkan Laptop Lenovo punya Andi
Ini berasal dari Destructor Laptop
Objek Telah Dihancurkan
hidupkan_laptop(), saya hapus object $laptop_andi dengan manual memakai fungsi unset($laptop_andi).
Untuk menunjukkan jika destructor $laptop_andi telah dijalankan, saya menambahkan perintah echo "Object Sudah Dihancurkan" di akhir code program. Hingga kita dapat lihat jika destructor object $laptop andi di lakukan saat sebelum dihapus automatis oleh PHP.
Silakan anda coba hapus perintah unset($laptop_andi), karena itu string "Object Sudah Dihancurkan" akan tampil saat sebelum destructor object $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 paling akhir dalam panduan ini kali, saya akan membuat contoh constructor yang sering dipakai untuk membuat object dengan nilai awalnya. Ide ini sering dipakai dalam pemrograman object. Berikut contoh pemakaiannya:
<?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 code di atas saya memakai constructor sebagai pembuat nilai awalnya object. Metode constructor terima 2 buah argument yang selanjutnya disimpan ke properti intern object.
Berikut hasil yang didapatkan dari code program di atas:
Hidupkan Laptop Lenovo punya Andi
Hidupkan Laptop Acer punya Anto
Sebagai tambahan, dalam PHP constructor dan destructor harus mempunyai hak akses public. Bila kita mengganti hak akses constructor atau destructor jadi protected atau privat, PHP akan keluarkan pesan error berikut ini:
Fatal error: Call to private laptop::__construct()
from invalid context
Dalam panduan ini kali kita sudah membahas tentang pengertian constructor dan destructor dalam Pemrograman object PHP. Selanjutnya melihat contoh pembuatan class dan object memakai constructor dan destructor.
Dalam panduan belajar OOP PHP selanjutnya akan dibahas ide penting lain, yaitu pengurangan/pewarisan (inheritance) dalam Pemrograman object.