Thursday, November 27, 2014

Tutorial PHP OOP Part 12 : Apa itu Static, Parent dan Self ?

Static, Parent dan Self adalah keyword pada PHP OOP yang merupakan perintah dalam membuat dan menangani sebuah static properti atau static method didalam class. Keyword "static" dipakai saat membuat static properti atau static method sedangkan keyword "parent" dan "self" dipakai untuk mengakses properti atau method tersebut didalam class dan class turunannya.

Keuntungan dari membuat static properti dan static method adalah kita bisa mengaksesnya tanpa membuat instantisasi object. Hal ini telah dibahas pada tulisan sebelumnya tentang operator Scope Resolution (::) .

Membuat Static Properti dan Static Method

Untuk membuat static properti dan static method kita menggunakan keyword "static". Kita juga bisa menggunakan teknik enkapsulasi seperti public, private dan protected dalam membuat static properti dan static method.

Membuat Static Properti

class Classname {
    public static $var = Value;
}

Membuat Static Method

class Classname {
    public static function aStaticMethod() {
        // ...
    }
}

Contoh Membuat Static Properti dan Static Method

 <?php  
 class Sekolah  
 {  
   public static $namaSekolah = 'SMPN 1 WELAHAN';  

   public static function showSekolah() {  
     return self::$namaSekolah;  
   }  
 }  
 
 ?>  

Mengakses Static Properti dan Static Method

Dalam mengakses  static properti dan static method kita menggunakan operator scope resolution (::). Kita bisa mengakses  static properti dan static method didalam dan diluar class. Untuk mengakses dari luar class kita gunakan nama class, operator :: dan nama static, contoh : MyClass::CONSTANT.

Dan untuk mengakses  static properti dan static method didalam class kita gunakan keyword "self". Untuk mengakses  static properti dan static method pada class induk (diakses dari class turunan) kita gunakan keyword "parent". Dengan demikian kita tidak perlu menggunakan variabel $this saat akan mengakses static properti dan static method didalam class.

Mengakses Static Properti dan Static Method pada class (Induk)

 <?php  
 class Sekolah  {  
   public static $namaSekolah = 'SMPN 1 WELAHAN';  

   public function showSekolah() {  
     return self::$namaSekolah;  
   }  
 }  
 
 //mengakses static properti secara langsung  
 print Sekolah::$namaSekolah . "<br/>";  

 //mengakses static properti dengan static method  
 print Sekolah::showSekolah() . "<br/>";  
 ?>  

Mengakses Static Properti dan Static Method pada class turunan

 <?php  
 class Sekolah  
 {  
   public static $namaSekolah = 'SMPN 1 WELAHAN';  

   public static function showSekolah() {  
     return self::$namaSekolah;  
   }  
 }  

 class Siswa extends Sekolah  
 {  
   public static $namaSiswa = 'SABRINA';  

   public static function showSiswa() {  
     return self::$namaSiswa ." dari ".parent::$namaSekolah;  
   }  
 }  

 //mengakses static properti class induk secara langsung  
 print Sekolah::$namaSekolah . "<br/>";  

 //mengakses static properti class induk dengan method  
 print Sekolah::showSekolah() . "<br/>";  

 //mengakses static properti class anak secara langsung  
 print Siswa::$namaSiswa . "<br/>";  

 //mengakses static properti class induk dan class anak dengan method  
 print Siswa::showSiswa() . "<br/>";  
 ?>  
Pada program diatas kita membuat dua cuah class, yaitu class Sekolah (class induk) dan class Siswa yang merupakan turunan dari class Sekolah.

Pada class Sekolah terdapat sebuah static properti $namaSekolah dan static method showSekolah(). Pada method showSekolah terlihat kita mengakses static properti $namaSekolah dengan keyword self.

Pada class Siswa yang merupakan turunan dari class Sekolah, sebuah static properti $namaSiswa dan static method showSiswa(). Pada method showSiswa ini terlihat kita mengakses dua buah static properti yaitu $namaSekolah dan $namaSiswa.

Karena  berada pada class induk maka kita mengakses Statis properti $namaSekolah dengan keyword parent. Sementara untuk mengakses static properti $namaSiswa kita menggunakan keyword self.

Jika script diatas dijalankan akan tampil seperti ini :

SMPN 1 WELAHAN
SMPN 1 WELAHAN
SABRINA
SABRINA dari SMPN 1 WELAHAN

Referensi :

2 komentar: