Bag. 11 : Cara Mengakses Constructor dan Destructor Parent Class
Efek Inheritance dalam Constructor dan Destructor
Seperti yang telah kita pelajari dalam tutorial Tutorial Belajar
OOP PHP: Pengertian Constructor dan Destructor, construktor dan destructor
adalah method khusus yang dijalankan secara otomatis ketika sebuah class di
instansiasi ke dalam sebuah objek, dan ketika objek tersebut dihapus.
Konsep inhertitance atau pewarisan class memiliki efek khusus
dalam construktor dan destructor. Terutama construktor dan destructor dari
parent class.
Mari kita jelaskan dengan menggunakan 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 kode diatas, saya membuat class komputer dengan construktor
dan destructor. Class komputer kemudian diturunkan kepada class laptop,
kemudian diturunkan kembali kepada class chromebook. Baik class laptop maupun
class chromebook tidak memiliki property maupun method. Class chromebook inilah
yang akan kita instansiasi kedalam objek $gadget_baru.
Ketika program itu dijalankan, berikut adalah hasil yang didapat:
Constuctor
dari class komputer
Belajar
OOP PHP
Destructor
dari class komputer
Dari hasil tersebut terlihat bahwa constructor dan destructor
class komputer tetap dijalankan walaupun kita membuat objek dari class
chromebook.
Pengertian
Overridden Constructor dan Overridden Destructor
Dalam kode program diatas, saya tidak membuat constructor dan
destructor untuk class laptop dan class chromebook. Tapi bagaimana jika ketiga
class ini juga memiliki 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
Kemana constructor dan destructor class lainnya?
Di dalam PHP, ketika child class memiliki constructor dan
destructor sendiri, maka PHP akan melewatkan constructor dan destructor parent
class, kasus ini disebut dengan Overridden Constructor dan Overridden
Destructor. Karena di dalam contoh kita class chromebook memiliki constructor
dan destructor, maka constructor dan destructor class induknya tidak
dijalankan.
Bagaimana jika kita ingin constructor dan destructor parent class
tetap dijalankan?
Solusinya, kita harus memanggil constructor dan destructor parent
class secara manual dengan Scope Resolution Operator, yakni:
parent::__construct() dan parent::__desctruct().
Berikut adalah modifikasi kode program kita diatas:
<?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

Post a Comment