9. DESTRUCTORS

Destructor adalah method khusus dalam class yang dipanggil secara otomatis ketika sebuah object dihapus atau keluar dari cakupan (scope). Destructor digunakan untuk membersihkan sumber daya (resource) yang telah digunakan oleh object, seperti menutup koneksi database atau menghapus file sementara. Dalam PHP, destructor dideklarasikan dengan nama __destruct(), mirip dengan constructor, tetapi tanpa parameter.

Sintaks Destructor dalam PHP

Berikut adalah contoh sederhana penggunaan destructor dalam PHP:

class Pengguna {
    function __destruct() {
        // Kode destructor ditulis di sini
    }
}
Contoh Penggunaan Destructor

AYO PAHAMI!


Petunjuk:

  1. Perhatikan kode program PHP yang ditampilkan di kotak sebelah kiri.
  2. Ketik ulang seluruh baris kode tersebut ke dalam editor di sebelah kanan.
  3. Pastikan setiap baris dan struktur penulisan sesuai dengan contoh (termasuk titik koma, kurung, dll).
  4. Tekan tombol RUN di dalam editor untuk menjalankan program.
  5. Perhatikan hasil keluaran di bawah editor. Apa yang ditampilkan?
<?php
class Bangunan {
    function __destruct() {
        echo "Sebuah bangunan sedang dihancurkan!";
    }
}

// Membuat object
$rumah = new Bangunan();

// Saat script selesai atau object dihapus, destructor akan dipanggil otomatis.
unset($rumah);

Class Bangunan memiliki method khusus __destruct() yang akan dipanggil secara otomatis saat object $rumah dihancurkan, baik karena script selesai dieksekusi atau menggunakan unset(). Method ini berguna untuk menjalankan proses akhir seperti menutup koneksi atau menampilkan pesan. Dalam contoh ini, pemanggilan unset($rumah) secara eksplisit menghapus object, sehingga muncul pesan dari destructor.

LATIHAN

Ayo buktikan pemahamanmu!

Lengkapilah kode program berikut agar dapat mencetak informasi bahwa file sementara telah dihapus dari sistem!

<?php
class FileSementara {
    private $namaFile;

    public function ___($namaFile) {
        $this->___ = $namaFile;
    }

    public function ___() {
        echo "File {$this->namaFile} telah dihapus dari sistem.";
    }
}

$file = new FileSementara("data_tmp.txt");
___($file);
?>

Seret ke tempat kosong:

  • $file
  • __construct
  • __destruct
  • unset
  • namaFile