oopconstructordestructorMahir3 mnt baca

Constructor dan Destructor

Fungsi yang jalan otomatis saat object dibuat (__construct) dan dihancurkan (__destruct).

__construct: jalan otomatis saat new

Constructor dipanggil otomatis setiap kali object dibuat dengan new. Gunanya: memastikan object langsung punya data yang valid sejak lahir.

php
<?php
class User {
    public string $nama;
    public string $email;

    public function __construct(string $nama, string $email) {
        $this->nama = $nama;
        $this->email = $email;
    }

    public function sapa(): string {
        return "Halo, {$this->nama}!";
    }
}

$user = new User("Malik", "[email protected]");
echo $user->sapa(); // Halo, Malik!
// new User(); // ERROR: butuh 2 argumen

Tanpa constructor, kamu harus mengisi property satu per satu dan gampang lupa. Dengan constructor, object tidak bisa dibuat dalam keadaan "setengah jadi".

Constructor property promotion (PHP 8+)

Cara ringkas yang sangat populer: deklarasikan visibility langsung di parameter constructor.

php
<?php
class User {
    public function __construct(
        public string $nama,
        public string $email,
        private string $password = "",
    ) {}
}

$user = new User("Malik", "[email protected]");
echo $user->nama; // Malik

PHP otomatis membuat property sekaligus mengisinya. Satu blok menggantikan deklarasi property + assignment manual.

__destruct: bersih-bersih saat object selesai

php
<?php
class Koneksi {
    public function __construct() {
        echo "Koneksi dibuka.<br>";
    }

    public function __destruct() {
        echo "Koneksi ditutup.";
    }
}

$db = new Koneksi(); // Koneksi dibuka.
// ... script selesai, object dihancurkan ...
// Koneksi ditutup.

Destructor jarang dipakai manual, tapi berguna untuk melepas resource seperti koneksi database atau file.

Catatan teknis: Constructor tidak punya return value dan tidak boleh dipanggil manual untuk "mengulang inisialisasi". Kalau butuh object dengan data berbeda, buat object baru. Selain itu, constructor yang butuh banyak parameter (lebih dari 4-5) biasanya tanda class-nya mengerjakan terlalu banyak hal dan layak dipecah.