Bag. 12: Pengertian Static Property dan Static Method


 Pengertian Static Property dan Static Method

Jika di awal tutorial Pemrograman objek PHP ini saya menjelaskan bahwa seluruh property dan method hanya bisa diakses dari objek, maka static property dan static method adalah pengecualiannya.

 

Static property dan static method adalah property (variabel) dan method (function) yang melekat kepada class, bukan kepada objek. Konsep static property memang ‘agak keluar’ dari konsep objek sebagai tempat melakukan proses, karena sebenarnya class hanya merupakan ‘blueprint’ saja.

 

Untuk membuat static property dan static method, kita menambahkan keyword ‘static’ setelah penulisan akses level property atau method, seperti contoh berikut:

               

// static property

public static $harga_beli;

 

// static method

public static function beli_laptop() {

   //...isi method

}

 

Dalam contoh diatas, saya menggunakan hak akses public, tetapi kita juga bisa menggunakan hak akses lain seperti private dan protected untuk static property dan static method.

 

Karena static property dan static method adalah milik class, maka kita tidak perlu membuat objek untuk mengaksesnya, tapi langsung menyebutkan nama class dan menggunakan operator ‘::’, berikut adalah contoh pengaksesan static property dan static method dari class laptop:

               

echo laptop::$harga_beli;

echo laptop::beli_laptop();

 

Tutorial Cara Penggunaan Static Property dan Static Method

Agar lebih memahami cara penggunaan static property dan static method, langsung saja kita masuk ke dalam kode program:

               

<?php

// buat class laptop

class laptop {

   public $merk;

   public $pemilik;

 

   // static property

   public static $harga_beli;

 

   //static method

   public static function beli_laptop() {

     return "Beli Laptop";

   }

}

 

// set static property

laptop::$harga_beli=4000000;

 

// get static property

echo "harga beli : Rp".laptop::$harga_beli;

 

echo "<br />";

 

// panggil static method

echo laptop::beli_laptop();

?>

 

Dalam kode diatas, saya membuat class laptop dengan 2 property ‘biasa’, 1 static property dan 1 static method. Perhatikan cara mengkases keduanya tanpa membuat objek.

Cara Mengakses Static Property dan Static Method Dari Class Itu Sendiri

 

Jika kita menggunakan variabel $this untuk mengakses property dan method ‘normal’ dari dalam class, maka untuk mengakses static property dan static method, kita menggunakan keyword “self::”. Berikut contoh penggunaannya:

               

<?php

// buat class laptop

class laptop {

   public $merk;

   public $pemilik;

  

   // static property

   public static $harga_beli;

 

   //static method

   public static function beli_laptop() {

     return "Beli laptop seharga Rp".self::$harga_beli;

   }

}

 

// set static property

laptop::$harga_beli=4000000;

 

// panggil static method

echo laptop::beli_laptop();

?>

 

Pada kode program PHP diatas, saya menggunakan perintah self::$harga_beli, untuk memanggil static property dari dalam class laptop itu sendiri.

Cara Mengakses Static Property dan Static Method Parent Class

 

Untuk class dengan penurunan (inheritance), kita bisa menggunakan keyword parent::nama_property dan parent::nama_method untuk mengakses static property dan static method dari parent class.

 

Misalnya class laptop adalah turunan dari class komputer, kita bisa menggunakan perintah parent::beli_komputer() untuk mengakses static method pada class komputer dari dalam class laptop.  Berikut adalah contoh pengaksesan static method milik parent class:

               

<?php

// buat class komputer

class komputer {

 

   // protected static method

   protected static function beli_komputer(){

     return "Beli Komputer Baru";

   }

}

 

// turunkan class komputer ke class laptop

class laptop extends komputer{

 

   // private static method

   private static function beli_laptop(){

     return "Beli Laptop Baru";

   }

 

   // public static method

   public static function beli_semua(){

     echo parent::beli_komputer();

     echo "<br />";

     echo self::beli_laptop();

   }

}

 

 

// panggil static method

laptop::beli_semua();

 

// coba panggil private static method

// laptop::beli_laptop();

// Fatal error: Call to private method laptop::beli_laptop()

?>

 

Pada kode diatas, saya membuat class komputer dengan sebuah static method beli_komputer(). Method ini memiliki hak akses protected, sehingga hanya bisa diakses dari dalam class itu sendiri atau dari dalam class turunan.

 

Class komputer kemudian ‘diturunkan’ kepada class laptop. Di dalam class laptop, saya membuat dua buah static method. Static method beli_laptop() di set dengan hak akses private, sehingga tidak bisa diakses dari luar class laptop.

 

Dalam method beli_semua(), saya memanggil method beli_komputer() milik class komputer menggunakan perintah parent::beli_komputer(). Ini adalah cara pemanggilan static method milik parent class. Kemudian masih di dalam method beli_semua(), saya memanggil method beli_laptop() dengan perintah self::beli_laptop(), karena method ini ada di dalam class leptop itu sendiri.

 

Untuk menguji apakah method beli_semua() sukses dijalankan, saya kemudian memanggilnya dengan perintah laptop::beli_semua().

 

Perhatikan juga pada bagian komentar di akhir kode diatas. Jika kita mencoba memanggil method laptop::beli_laptop(), PHP akan mengeluarkan error karena method beli_laptop() memiliki hak akses private, sehingga tidak bisa diakses dari luar class.