Scope Resolution Operator (::)
Assalamualaikum wr.wb
Pagi kawan, pada hari ini saya akan sharing tentang Pengertian Scope Resolution Operator (::)
A. Pengertian
Operator scope resolution (::) atau dalam bahasa indonesia berarti operator resolusi ruang lingkup adalah operator yang membuat kita diijinkan untuk mengakses static, konstanta, properti dan method pada sebuah class. Operator ini juga disebut dengan Paamayim Nekudotayim. Dengan operator (::) kita bisa mengakses secara langsung sesuatu tanpa instantisasi object. Kita pernah membahas operator ini pada tulisan konstanta pada class.
B. Latar Belakang
Ketika kita mereference item ini dari luar definisi class, kita harus menggunakan nama class. Mulai pada PHP 5.3.0 dimungkinkan mereferen class menggunakan variabel. Yang penting nilai variabel tidak boleh berupa keyword, seperti self, parent dan static.
C. Maksud dan Tujuan
Maksud dan tujuan sharing materi tersebut, dengan tujuan untuk menjelaskan alur sederhana agar teman-teman dapat memahami lebih mudah Scope Resolution Operator.
D. Alat dan Bahan
- Komputer / Laptop
- Text Editor
E. Materi
1. Menggunakan Operator :: Dari Luar Class
- <?php
- //membuat class
- class MyClass {
- const KONSTANTA = 'Nilai Konstan';
- }
- //memanggil konstanta pada class tanpa instantisasi object
- echo MyClass::KONSTANTA."<br/>";
- //menggunakan variabel dalam mereferen class
- $classname = 'MyClass';
- echo $classname::KONSTANTA; // As of PHP 5.3.0
- ?>
2. Menggunakan Operator :: Dari Dalam Class
Ada tiga keyword khusus yang bisa dipakai dalam menggunakan operator :: didalam class, yaitu : static, parent dan self.- <?php
- class MyClass {
- const KONSTANTA = 'Nilai Konstan';
- }
- //membuat class anak turunan dari MyClass
- class Anak extends MyClass
- {
- public static $my_static = 'Variabel Static';
- public static function doubleColon() {
- echo parent::KONSTANTA . "<br/>";
- echo self::$my_static . "<br/>";
- }
- }
- //memanggil method pada class tanpa instantisasi object
- //dengan mereferen dari variabel
- $classname = 'Anak';
- echo $classname::doubleColon(); // As of PHP 5.3.0
- //memanggil method pada class tanpa instantisasi object
- Anak::doubleColon();
- ?>
3. Memanggil Method Pada Parent Class (Class Induk)
Ketika class turunan menimpa method yang ada pada class induk (parent class) maka PHP tidak akan memanggil method pada class induk. Jadi bergantung pada class turunan mau menggunakan method pada class induk atau tidak. Cara ini juga dipakai pada Constructors, Destructors, Overloading, dan definisi Magic method.- <?php
- class MyClass
- {
- protected function myFunc() {
- echo "MyClass::myFunc()<br/>";
- }
- }
- class Anak extends MyClass
- {
- // Membuat function yang menimpa function pada induk
- public function myFunc()
- {
- // tapi masih bisa mengakses method dari class induk
- parent::myFunc();
- echo "Anak::myFunc()<br/>";
- }
- }
- $class = new Anak();
- $class->myFunc();
- ?>
Kemudian kita membuat class turunan bernama Anak dan membuat method bernama myFunc() juga, sama dengan method pada class induk. Kemudian pada method tersebut kita membuat dua perintah, yaitu { parent::myFunc(); } untuk mengakses method myFunc() pada class induk dan { echo "Anak::myFunc()<br/>"; } untuk menampilkan tulisan "Anak::myFunc()".
F. Referensi
- http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php#language.oop5.paamayim-nekudotayim
- http://www.duniailkom.com/tutorial-belajar-oop-php-cara-mengakses-property-dan-method-parent-class/
G. Hasil dan Kesimpulan
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.
Yak, itu tadi penjelasan singkat tentang Pengertian Object Interface Dalam Pemrograman Berbasis Objek , jangan lupa untuk kunjungi terus blog saya untuk mengetahui kelanjutan materi ini Sekian Termiakasih
Wassalamualaikum wr.wb