Mengenal Operator Scope Resolution (::)

mengenal operator scope resolution::

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.

johanandyagasi.blogspot.com 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.

Untuk lebih jelas perhatikan cara menggunakan operator :: berikut ini :

1. Menggunakan operator :: dari luar class 

  1. <?php    
  2. //membuat class  
  3. class MyClass {    
  4.   const KONSTANTA = 'Nilai Konstan';    
  5. }    
  6.   
  7. //memanggil konstanta pada class tanpa instantisasi object    
  8. echo MyClass::KONSTANTA."<br/>";    
  9.   
  10. //menggunakan variabel dalam mereferen class    
  11. $classname = 'MyClass';    
  12. echo $classname::KONSTANTA; // As of PHP 5.3.0    
  13. ?>    
2. Menggunakan operator :: dari dalam class 

Ada tiga keyword khusus yang bisa dipakai dalam menggunakan operator :: didalam class, yaitu : static, parent dan self.

  1. <?php    
  2. class MyClass {    
  3.   const KONSTANTA = 'Nilai Konstan';    
  4. }    
  5.   
  6. //membuat class anak turunan dari MyClass  
  7. class Anak extends MyClass    
  8. {    
  9.     public static $my_static = 'Variabel Static';    
  10.     public static function doubleColon() {    
  11.   
  12.     echo parent::KONSTANTA . "<br/>";    
  13.     echo self::$my_static . "<br/>";    
  14.   }    
  15. }    
  16.   
  17. //memanggil method pada class tanpa instantisasi object    
  18. //dengan mereferen dari variabel    
  19. $classname = 'Anak';    
  20. echo $classname::doubleColon(); // As of PHP 5.3.0    
  21.   
  22. //memanggil method pada class tanpa instantisasi object    
  23. Anak::doubleColon();    
  24. ?>    
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.

  1. <?php    
  2. class MyClass    
  3. {    
  4.   protected function myFunc() {    
  5.     echo "MyClass::myFunc()<br/>";    
  6.   }    
  7. }    
  8.   
  9. class Anak extends MyClass    
  10. {    
  11.   // Membuat function yang menimpa function pada induk    
  12.   public function myFunc()    
  13.   {    
  14.     // tapi masih bisa mengakses method dari class induk    
  15.     parent::myFunc();    
  16.   
  17.     echo "Anak::myFunc()<br/>";    
  18.   }    
  19. }    
  20.   
  21. $class = new Anak();    
  22. $class->myFunc();    
  23. ?>    

Pada contoh terdapat class induk MyClass yang mempunyai method myFunc dengan perintah menampilkan "MyClass::myFunc()" untuk menandai bahwa tampilan ni dihasilkan oleh method myFunc() pada class induk.

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()".
0 Komentar untuk " Mengenal Operator Scope Resolution (::) "