PHP Class Extends, sebelumnya dalam Tutorial OOP PHP kita sudah membahas tentang membuat class, method, construct, destruct, visibility dan property. Sekarang kita akan bahas mengenai Class Extends. Apa itu Class Extends ? Class Extends adalah salah cara untuk menggunakan fitur inheritance dari Object Oriented Programming yang ada di PHP. Dimana teknisnya adalah kita menggabungkan Class PHP dengan Class PHP yang baru, yang nanti akan menjadi Parent Class ( class lama ), Child Class (class baru) dimana class Child inilah yang akan menjadi pewaris sifat (property dan method) dari Parent Class.
contoh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// parent class class ONPHPID { public function the_name() { echo 'ONPHPID Tutorial'; } } // child class class BelajarOOP extends ONPHPID { } $belajar = new BelajarOOP(); $belajar->the_name(); |
output
ONPHPID Tutorial
Tanpa harus membuat method baru di Class Child kita sudah bisa menggunakan method-method yang ada atau dimiliki oleh Class Parent sehingga kita tinggal menggunakan melanjutkan.
Note: Perlu diingat method atau properties yang boleh atau bisa diakses oleh Child hanya method atau properties dengan visibility public dan protected saja.
Kapan kita menggunakan PHP Class Extends ?
ketika kita ingin mengubah Core atau sistem inti tapi tidak ingin mengubahnya langsung pada filenya. karena kita diberi kebebasan untuk melakukan Overriding. sehingga code dari core tidak berubah sedikitpun, tapi hasilnya berubah, mari kita lihat penjelasan berikut ini.
PHP Class Overriding
Maksud dari Overriding di sini adalah untuk menimpa method atau properties agar fungsinya dapat diubah.
contoh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class ONPHPID { public function the_name() { echo 'ONPHPID Tutorial'; } } class BelajarOOP extends ONPHPID { public function the_name() { echo 'BelajarOOP ONPHPID'; } } $belajar = new BelajarOOP(); $belajar->the_name(); |
output
BelajarOOP ONPHPID
dengan cara itu di class ONPHPID kita tidak mengubah isi method the_name()
, dibawah hasil method the_name()
pun berubah, sesuai class yang di instance.
Lalu apakah tidak bisa kita buat method yang sama tapi method parent tetap digunakan.
Tentu bisa.. dengan keyword parent dan scope resolution (::) kita bisa mengakses parent method yang di inginkan.
contoh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class ONPHPID { public function the_name() { echo 'ONPHPID Tutorial'; } } class BelajarOOP extends ONPHPID { public function the_name() { parent::the_name(); echo 'BelajarOOP ONPHPID'; } } $belajar = new BelajarOOP(); $belajar->the_name(); |
output
1 2 |
ONPHPID BelajarOOP ONPHPID |
Membuat method __construct
pada Class Child
Saat kita menggunakan class extends kita tidak boleh sembarangan menuliskan method bisa-bisa method tersebut akan menimpa method sebelumnya dan hasilnyapun berubah. Apalagi method __construct
, kalo sampe ke override bisa hilang fungsi extends, tapi ada cara khusus agar kita tetap menggunakan bisa membuat __construct
dan tidak menimpa __construct
parent. Yak menggunakan keyword parent dan scope resolution (::).
contoh :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class ONPHPID { public function __construct() { echo 'ONPHPID'; } } class BelajarOOP extends ONPHPID { public function __construct() { parent::__construct(); echo 'Child ONPHPID'; } } new BelajarOOP(); |
output
1 2 |
ONPHPID Child ONPHPID |
Baik Saya rasa cukup sekian untuk PHP Class Extends, nantikan artikel berikutnya. artikel berikutnya akan membahas Abstract, Interface dan implemement