Belajar Pemrograman OOP PHP Part 10 - Belajar Menggunakan Constructor Dan Destructor Parent Class Pada Pemrograman Dasar PHP
Sesudah membahas langkah mengakses properti dan metode parent class, dalam panduan belajar OOP PHP pada kesempatan ini akan membahas langkah mengakses constructor dan destructor parent class. Panduan ini kali masih berkaitan dengan dampak pewarisan (inheritance) dalam pemrograman object.
Dampak Inheritance dalam Constructor dan Destructor
Sama seperti yang sudah kita pelajari dalam Panduan Belajar OOP PHP: Pengertian Constructor dan Destructor, construktor dan destructor ialah metode khusus yang dijalankan secara automatis saat sebuah class di instansiasi ke sebuah object, dan saat object itu dihapus.
Konsep inhertitance atau pewarisan class mempunyai dampak khusus dalam construktor dan destructor. Khususnya construktor dan destructor dari parent class.
Mari kita jelaskan dengan memakai contoh:
<?php
// buat class komputer
class komputer {
// buat constructor class komputer
public function __construct() {
echo "Constructor dari class komputer <br />";
}
// buat destructor class komputer
public function __destruct() {
echo "Destructor dari class komputer <br />";
}
}
// turunkan class komputer ke laptop
class laptop extends komputer {
}
// turunkan class laptop ke chromebook
class chromebook extends laptop {
}
// buat objek dari class chromebook (instansiasi)
$gadget_baru = new chromebook();
echo "Belajar OOP PHP <br />";
?>
Pada code di atas, saya membuat class computer dengan construktor dan destructor. Class computer selanjutnya di turunkan ke class laptop, selanjutnya di turunkan kembali ke class chromebook. Baik class laptop atau class chromebook tidak mempunyai properti atau metode. Class chromebook berikut yang akan kita instansiasi di dalam object $gadget_baru.
Saat program itu dilakukan, berikut hasil yang akan didapatkan:
Constuctor dari class komputer
Belajar OOP PHP
Destructor dari class komputer
Dari hasil itu terlihat jika constructor dan destructor class computer masih tetap dijalankan meskipun kita membuat object dari class chromebook.
Pengertian Overridden Constructor dan Overridden Destructor
Dalam code program di atas, saya tidak membuat constructor dan destructor untuk class laptop dan class chromebook. Tetapi bagaimana bila ketiga class ini mempunyai constructor dan destructor? Mari kita coba:
<?php
// buat class komputer
class komputer {
// buat constructor class komputer
public function __construct() {
echo "Constructor dari class komputer <br />";
}
// buat destructor class komputer
public function __destruct() {
echo "Destructor dari class komputer <br />";
}
}
// turunkan class komputer ke laptop
class laptop extends komputer {
// buat constructor class laptop
public function __construct() {
echo "Constructor dari class laptop <br />";
}
// buat destructor class laptop
public function __destruct() {
echo "Destructor dari class laptop";
}
}
// turunkan class laptop ke chromebook
class chromebook extends laptop {
// buat constructor class chromebook
public function __construct() {
echo "Constructor dari class chromebook <br />";
}
// buat destructor class chromebook
public function __destruct() {
echo "Destructor dari class chromebook <br />";
}
}
// buat objek dari class chromebook (instansiasi)
$gadget_baru = new chromebook();
echo "Belajar OOP PHP <br />";
?>
Kode diatas memiliki constructor dan destructor pada masing-masing class, mari kita lihat hasilnya:
Constuctor dari class chromebook
Belajar OOP PHP
Destructor dari class chromebook
Ke mana constructor dan destructor class lainnya?
Dalam PHP, saat child class mempunyai constructor dan destructor sendiri, karena itu PHP akan melewati constructor dan destructor parent class, kasus ini disebutkan dengan Overridden Constructor dan Overridden Destructor. Karena dalam contoh kita class chromebook mempunyai constructor dan destructor, karena itu constructor dan destructor class induknya tidak dijalankan.
Bagaimana bila kita ingin constructor dan destructor parent class masih tetap dijalankan?
Solusinya, kita harus memanggil constructor dan destructor parent class dengan manual dengan Scope Resolution Operator, yaitu: parent::__construct() dan parent::__desctruct().
Berikut modifikasi code program kita di atas:
<?php
// buat class komputer
class komputer {
public function __construct() {
echo "Constructor dari class komputer <br />";
}
public function __destruct() {
echo "Destructor dari class komputer <br />";
}
}
// turunkan class komputer ke laptop
class laptop extends komputer {
public function __construct() {
parent::__construct();
echo "Constructor dari class laptop <br />";
}
public function __destruct() {
echo "Destructor dari class laptop <br />";
parent::__destruct();
}
}
// turunkan class laptop ke chromebook
class chromebook extends laptop {
public function __construct() {
parent::__construct();
echo "Constructor dari class chromebook <br />";
}
public function __destruct() {
echo "Destructor dari class chromebook <br />";
parent::__destruct();
}
}
// buat objek dari class chromebook (instansiasi)
$gadget_baru = new chromebook();
echo "Belajar OOP PHP <br />";
?>
Hasil yang kita dapat adalah:
Constructor dari class komputer
Constructor dari class laptop
Constructor dari class chromebook
Belajar OOP PHP
Destructor dari class chromebook
Destructor dari class laptop
Destructor dari class komputer
Dengan memanggil manual perintah parent::__construct() dan parent::__desctruct(), kita dapat menjalankan semua constructor dan destructor dari parent class.
Dalam panduan belajar Objek Oriented Programming (OOP) PHP ini kali, kita sudah pelajari langkah kerja constructor dan destructor bila sebuah class di turunkan dari class lain (inheritance).
Constructor dan destructor parent class akan dijalankan bila child class tidak mendefenisikan constructor dan destructor sendiri. Tetapi bila child class mempunyai constructor dan desctructor, karena itu kita harus memanggil constructor dan destructor parent class secara manual.
Dalam panduan OOP PHP selanjutnya, kita akan pelajari pengertian static properti dan static metode dalam pemrograman object.