♠ Posted by Unknown in OOP at 05.59
Mengakses Property dan Method Parent Class
Contoh :
<?php // buat class tablet class tablet { public function lihat_spec() { return "Spec tablet: Lenovo, Camera 8 Pixel, Memory 8GB"; } } // turunkan class tablet ke iphone class iphone extends tablet { public function lihat_spec() { return "Spec iphone: Apple, Camera 8 Pixel, Memory 4GB"; } } // buat objek dari class iphone (instansiasi) $gadget_baru = new iphone(); //panggil method lihat_spec() echo $gadget_baru->lihat_spec(); ?>
Pada kode program diatas, dibuat 2 buah class: tablet dan iphone. Kemudian class tablet diturunkan kedalam class iphone, sehingga seluruh property dan method dari class tablet bisa diakses dari class iphone.
Jika anda menjalankan kode diatas, maka hasilnya adalah:
Spec iphone: Apple, Camera 8 Pixel, Memory 4GB
Berdasarkan hasil yang di dapat, terlihat bahwa method yang dijalankan adalah method milik class laptop. Di dalam PHP, ketika nama property atau nama method child class memiliki nama yang sama dengan parent class, maka yang dijalankan adalah 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’.
Scope Resolution Operator PHP
Scope Resolution Operator adalah operator khusus di dalam PHP yang memungkinkan kita untuk mengakses ‘informasi khusus‘ dari dalam class.
Informasi khusus ini terdiri dari: overridden property atau overridden method, static property atau static method, serta constanta class. Untuk saat ini, kita akan fokus kepada overridden property atau overridden method. Mengenai static property, static method, dan konstanta class akan kita bahas dalam tutorial lainnya.
Scope Resolution Operator ditulis dengan tanda dua kali titik dua (double colon), yakni “::”. Untuk mengakses property dan method dari class induk, kita mengaksesnya dengan perintah :
parent::nama_property; parent::nama_method();contoh program :
kali ini kita ingin menampilkan method lihat_spec() dari class komputer :
<?php // buat class tablet class tablet { public function lihat_spec() { return "Spec tablet: Lenovo, Camera 8 Pixel, Memory 8GB"; } } // turunkan class tablet ke iphone class iphone extends tablet { public function lihat_spec() { return "Spec iphone: Apple, Camera 8 Pixel, Memory 4GB"; } public function lihat_spec_tablet() { return parent::lihat_spec(); } } // buat objek dari class iphone (instansiasi) $gadget_baru = new iphone(); //panggil method lihat_spec() echo $gadget_baru->lihat_spec(); echo "<br />"; //panggil method lihat_spec_tablet() echo $gadget_baru->lihat_spec_tablet(); ?>
Kode program diatas pembuat program menambahkan sebuah method lihat_spec_tablet() kedalam class iphone. Method ini selanjutkan akan memanggil method class tablet, dengan perintah parent::lihat_spec().
Hasilnya adalah :
Spec iphone: Apple, Camera 8 Pixel, Memory 4GB Spec tablet: Lenovo, Camera 8 Pixel, Memory 8GB
Contoh diatas adalah cara mengakses method parent class dari child class. Lalu bagaimana dengan cara mengakses parent property dari child class? caranya adalah menggunakan parent::nama_property.
<?php // buat class tablet class tablet { public $merk = "Lenovo"; public function lihat_spec() { return "Spec Tablet: lenovo, Camera 8 Pixel, Memory 8GB"; } } // turunkan class tablet ke iphone class iphone extends tablet { public $merk = "Apple"; public function lihat_spec() { return "Spec iphone: Apple, Camera 8 Pixel, Memory 4GB"; } public function lihat_spec_tablet() { return parent::lihat_spec(); } public function lihat_merk_tablet() { return parent::$merk; } } // buat objek dari class laptop (instansiasi) $gadget_baru = new iphone(); //panggil method lihat_spec() echo $gadget_baru->lihat_spec(); echo "<br />"; //panggil method lihat_spec_tablet() echo $gadget_baru->lihat_spec_tablet(); //panggil method lihat_merk_tablet() echo $gadget_baru->lihat_merk_tablet();
?>
Dalam kode program diatas, pembuat program menambahkan sebuah method baru: lihat_merk_tablet() yang akan menjalankan perintah return parent::$merk. Jika kita menjalankan program diatas, hasilnya adalah:
Spec iphone: Apple, Camera 8 Pixel, Memory 8GB Spec Tablet: Lenovo, Camera 8 Pixel, Memory 4GB Fatal error: Access to undeclared static property: tablet::$merk
Kode error diatas berarti kita mencoba mengakses property static $merk dari class tablet, bukan property public $merk dari class tablet sebagaimana kode error (Property static tidak sama dengan property biasa.
Yang perlu menjadi perhatian disini adalah bahwa kode kita disini memiliki nama method dan property yang sama baik di child class dan juga pada parent class. Solusi yang paling mudah adalah: tidak menggunakan nama property dan method yang sama. Dengan demikian, kode program akan menjadi lebih jelas dan lebih mudah untuk dipahami.
Sumber : http://www.duniailkom.com
0 komentar:
Posting Komentar