Tutorial Belajar OOP PHP Part 10: Cara Mengakses Property dan Method Parent Class

Posted on

Melanjutkan panduan OOP PHP mengenai Inheritance, kali ini kita akan mempelajari cara mengakses property dan method dari parent class, serta pengertian Scope Resolution Operator.


Cara Mengakses Property dan Method Parent Class

Konsep pewarisan/inheritance dimana sebuah class dapat mempunyai property dan method dari class lain, dapat menjadi permasalahan ketika property atau method dari class anak mempunyai nama yang sama dengan class induk, atau dikenal dengan istilah overridden property dan overridden method.

Bagi memahami pengertian overridden property dan overridden method, perhatikan contoh kode program berikut ini:

Di kode program diatas, saya merancang 2 buah class: komputer dan laptop. Saya menurunkan class komputer kedalam class laptop, sehingga seluruh property dan method dari class komputer dapat diakses dari class laptop.

Namun perhatikan bahwa method di class komputer mempunyai nama yang sama dengan method pada class laptop. Ketika kita memanggil method lihat_spec(), method manakah yang akan dijalankan?

Sekiranya sahabat menjalankan kode diatas, karenanya hasilnya ialah:

Menurut hasil yang di dapat, terlihat bahwa method yang dijalankan ialah method milik class laptop.

Di pada PHP, ketika nama property atau nama method child class mempunyai nama yang sama dengan parent class, karenanya yang dijalankan ialah property atau method milik child class.

Jadi, bagaimana cara mengakses property dan method milik class komputer? PHP mengatasi hal ini dengan menggunakan ‘Scope Resolution Operator’.


Pengertian Scope Resolution Operator PHP

Scope Resolution Operator ialah operator khusus di pada PHP yang memungkinkan kita bagi mengakses ‘informasi khusus‘ dari pada class.

Informasi khusus ini terdiri dari: overridden property atau overridden method, static property atau static method, serta constanta class. Bagi dikala ini, kita akan fokus kepada overridden property atau overridden method. Mengenai static property, static method, dan konstanta class akan kita bahas pada panduan lainnya.

Scope Resolution Operator ditulis dengan tanda dua kali titik dua (double colon), yakni “::”. Bagi mengakses property dan method dari class induk, kita mengaksesnya dengan petunjuk:

Kembali kepada contoh program, kali ini kita ingin menampilkan method lihat_spec() dari class komputer:

Kode program diatas ialah revisi dari contoh kita sebelumnya. Saya menambahkan sebuah method lihat_spec_komputer() kedalam class laptop. Method ini selanjutkan akan memanggil method class komputer, dengan petunjuk parent::lihat_spec().

Hasilnya ialah:

Contoh diatas ialah cara mengakses method parent class dari child class. Lalu bagaimana dengan cara mengakses parent property dari child class? Sekiranya sahabat berfikir sama seperti saya, karenanya kita dapat tebak bahwa caranya ialah menggunakan parent::nama_property, apakah dapat? mari kita coba:

Pada kode program diatas, saya menambahkan sebuah method baru: lihat_merk_komputer() yang akan menjalankan petunjuk return
parent::$merk
. Sekiranya kita menjalankan program diatas, hasilnya ialah:

Apa yang terjadi?

Error diatas pun merancang saya bingung dikala pertama-tama kali mencobanya. Kode error diatas berarti kita mencoba mengakses property static $merk dari class komputer, bukan property public $merk dari class komputer dari yang kode error (Property static tak sama dengan property lazimnya, kita akan mempelajarinya sesaat lagi di: Pengertian static property dan static method).

Pengertian static property belum kita pelajari hingga panduan kali ini, dan akan saya bahas komplit di panduan tersendiri. Namun merujuk pada kode error tersebut dan membaca beberapa sumber, saya mendapati bahwa kita tak dapat mengakses property parent class secara seketika.

Jadi, bagaimana caranya?

Yang perlu menjadi perhatian disini ialah bahwa kode kita disini mempunyai nama method dan property yang sama bagus di child class dan pun di parent class. Solusi yang sangat gampang ialah: tak menggunakan nama property dan method yang sama. Dengan demikian, kode program akan menjadi lebih jelas dan lebih gampang bagi dimengerti.


Pada panduan kali ini, kita telah mempelajari cara mengakses property dan method parent class dengan Scope Resolution Operator, atau tanda ‘::’.

Pada panduan berikutnya, masih berkaitan dengan inheritance, kita akan mempelajari efek penurunan ini kedalam constructor dan destructor. Kita akan mempelajari cara mengakses constructor dan destructor parent class.


Sumber https://www.duniailkom.com/