♠ Posted by Unknown in OOP at 01.45
Mengakses Constructor dan Destructor Parent Class
Constructor (bahasa indonesia: konstruktor) adalah method khusus yang akan dijalankan secara otomatis pada saat sebuah objek dibuat (instansiasi), yakni ketika perintah “new” dijalankan.
Constructor biasa digunakan untuk membuat proses awal dalam mempersiapkan objek, seperti memberi nilai awal kepada property, memanggil method internal dan beberapa proses lain yang digunakan untuk ‘mempersiapkan’ objek.
Dalam PHP, constructor dibuat menggunakan method : __construct().
Destructor (bahasa indonesia: destruktor) adalah method khusus yang dijalankan secara otomatis pada saat sebuah objek dihapus. Di dalam PHP, seluruh objek secara otomatis dihapus ketika halaman PHP dimana objek itu berada selesai diproses. Tetapi kita juga dapat menghapus objek secara manual.
Destructor biasanya digunakan untuk ‘membersihkan’ beberapa variabel, atau menjalankan proses tertentu sebelum objek dihapus.
Dalam PHP, destructor dibuat menggunakan method : __destruct().
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.
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, dibuat 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 di instansiasi kedalam objek $gadget_baru.
Ketika program diatas dijalankan, maka hasilnya sebagai berikut.
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 ?
<?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, maka hasilnya sebagai berikut :
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, 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, yaitu 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 />"; ?>
maka hasilnya sebagai berikut.
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 bisa menjalankan seluruh constructor dan destructor dari parent class.
Constructor dan destructor parent class akan dijalankan jika child class tidak mendefenisikan constructor dan destructor sendiri. Namun jika child class juga memiliki constructor dan desctructor, maka kita harus memanggil constructor dan destructor parent class secara manual.
Sumber : http://www.duniailkom.com
0 komentar:
Posting Komentar