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.
__construct()
Berikut adalah contoh dasar pembuatan constructor dalam PHP:
class Pengguna { function __construct($parameter1, $parameter2) { // Pernyataan constructor ditulis di sini } }
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().
parent::__construct()
Petunjuk:
RUN
<?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.
Kendaraan
$merk
$tahunProduksi
Mobil
$jumlahPintu
parent::__construct($merk, $tahunProduksi)
infoMobil()
Constructor juga dapat memiliki parameter dengan nilai default. Jika parameter tidak diberikan saat object dibuat, maka nilai default akan digunakan.
<?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.
Produk
"Produk Tidak Diketahui"
$nama
0
$harga
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->(); ?>