Tutorial Belajar OOP PHP Part 8: Pengertian Constructor dan Destructor

Melanjutkan tutorial Belajar Object Oriented Programming (OOP) PHP, kali ini kita akan membahas tentang Pengertian Constructor dan Destructor dalam Pemrograman Objek, khususnya OOP PHP.


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() 
from invalid context

Dalam tutorial kali ini kita telah membahas tentang pengertian constructor dan destructor dalam Pemrograman objek PHP. Kemudian juga melihat contoh pembuatan class dan objek menggunakan constructor dan destructor.

Dalam tutorial belajar OOP PHP berikutnya akan dibahas konsep penting lain, yakni penurunan/pewarisan (inheritance) dalam Pemrograman objek.

33 Comments

  1. Ade Dwi Putra
    10 Sep 15
  2. graziani
    03 Oct 15
    • Andre
      04 Oct 15
  3. Agus setyar r
    27 Oct 15
    • Andre
      27 Oct 15
  4. jaka
    17 Dec 15
    • Andre
      17 Dec 15
  5. Mhari
    22 Mar 16
    • Andre
      23 Mar 16
  6. fajar
    21 Jun 16
    • Andre
      15 Oct 16
  7. Arif,setiawan
    14 Oct 16
    • Andre
      15 Oct 16
  8. angga
    03 Mar 17
    • Andre
      04 Mar 17
      • Zaky
        27 Jul 18
        • Andre
          28 Jul 18
  9. Rere
    15 Mar 17
  10. Arif
    04 Aug 17
    • Andre
      05 Aug 17
  11. Emmang
    07 Jun 18
    • Andre
      07 Jun 18
  12. Ril
    27 Jun 18
    • Andre
      28 Jun 18
  13. Albi
    16 Oct 18
  14. Muhammad Fikri
    02 Oct 21
    • Andre
      02 Oct 21
  15. Andik Mundaran
    08 Mar 22
    • Andre
      25 Mar 22
  16. Anas Fanani
    28 Nov 22
    • Andre
      28 Nov 22
  17. Anas Fanani
    28 Nov 22
    • Andre
      28 Nov 22

Add Comment

Leave a Reply to Emmang Cancel reply