8. CONSTRUCTORS

Constructor adalah method khusus dalam class yang otomatis dipanggil saat sebuah object dibuat. Method ini digunakan untuk menginisialisasi property dalam class. Dalam PHP, constructor dideklarasikan dengan nama __construct(), yang diawali dengan dua garis bawah (__). Constructor memungkinkan kita memberikan nilai awal pada property saat object diinstansiasi.

Sintaks Constructor dalam PHP

Berikut adalah contoh dasar pembuatan constructor dalam PHP:

class Pengguna {
    function __construct($parameter1, $parameter2) {
        // Pernyataan constructor ditulis di sini
    }
}
Pemanggilan Constructor dalam Pewarisan Class

Dalam PHP, jika sebuah class merupakan turunan dari class lain, maka constructor class induk tidak dipanggil secara otomatis. Untuk memanggil constructor dari class induk, kita harus menggunakan parent::__construct().

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 Kendaraan {
    public $merk;
    public $tahunProduksi;

    function __construct($merk, $tahunProduksi) {
        $this->merk = $merk;
        $this->tahunProduksi = $tahunProduksi;
    }

    function infoKendaraan() {
        return "Merk: {$this->merk}, Tahun: {$this->tahunProduksi}";
    }
}

class Mobil extends Kendaraan {
    public $jumlahPintu;

    function __construct($merk, $tahunProduksi, $jumlahPintu) {
        parent::__construct($merk, $tahunProduksi); // Memanggil constructor class induk
        $this->jumlahPintu = $jumlahPintu;
    }

    function infoMobil() {
        return parent::infoKendaraan() . ", Pintu: {$this->jumlahPintu}";
    }
}

// Membuat object dari class Mobil
$mobil1 = new Mobil("Toyota", 2022, 4);
echo $mobil1->infoMobil();

Class Kendaraan memiliki constructor yang menerima $merk dan $tahunProduksi. Class Mobil merupakan turunan dari Kendaraan dan memiliki constructor sendiri yang menerima tambahan parameter $jumlahPintu. Constructor di Mobil menggunakan parent::__construct($merk, $tahunProduksi) untuk memanggil constructor dari Kendaraan. Method infoMobil() menampilkan informasi kendaraan dengan tambahan jumlah pintu.

Constructor dalam Class dengan Parameter Opsional

Constructor juga dapat memiliki parameter dengan nilai default. Jika parameter tidak diberikan saat object dibuat, maka nilai default akan digunakan.

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 Produk {
    public $nama;
    public $harga;

    function __construct($nama = "Produk Tidak Diketahui", $harga = 0) {
        $this->nama = $nama;
        $this->harga = $harga;
    }

    function infoProduk() {
        return "Nama: {$this->nama}, Harga: Rp. {$this->harga}";
    }
}

// Object dengan parameter
$produk1 = new Produk("Laptop", 8000000);
echo $produk1->infoProduk();

// Object tanpa parameter (menggunakan nilai default)
$produk2 = new Produk();
echo $produk2->infoProduk();

Jika objek Produk dibuat tanpa parameter, maka constructor akan memberikan nilai default yaitu "Produk Tidak Diketahui" untuk $nama dan 0 untuk $harga. Namun jika parameter diberikan saat pembuatan objek, maka nilai tersebut akan menggantikan nilai default yang sudah ditetapkan.

LATIHAN

Ayo buktikan pemahamanmu!

Lengkapilah kode program berikut agar dapat mencetak informasi lengkap dari sebuah produk elektronik.
Pastikan constructor dari class induk dipanggil dengan benar di dalam class turunan.

<?php
class Produk {
    public $nama;
    public $merek;

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

    public function infoProduk() {
        return "Nama: {$this->nama}, Merek: {$this->merek}";
    }
}

class Laptop extends Produk {
    public $ram;

    public function __construct($nama, $merek, ) {
        ::__construct($nama, $merek);
        $this->ram = $ram;
    }

    public function infoLengkap() {
        return $this->infoProduk() . ", RAM: {$this->ram} GB";
    }
}

$laptopBaru = new Laptop("VivoBook", "ASUS", 16);
echo $laptopBaru->();
?>