Belajar Pemrograman OOP PHP Part 11 - Pengertian Static Property Dan Static Method Pada Pemrograman Dasar PHP - CRUDPRO

Belajar Pemrograman OOP PHP Part 11 - Pengertian Static Property Dan Static Method Pada Pemrograman Dasar PHP

Belajar Pemrograman OOP PHP Part 11 - Pengertian Static Property Dan Static Method Pada Pemrograman Dasar PHP

Dalam kelanjutan panduan belajar OOP PHP ini kali, kita akan pelajari mengenai Pengertian Static Properti dan Static Metode dalam Pemrograman Object, selanjutnya kita akan melihat langkah penggunaannya dalam PHP.

Pengertian Static Properti dan Static Metode

Bila pada awal panduan Pemrograman object PHP ini saya menerangkan jika semua properti dan metode cuma dapat diakses dari object, karena itu static properti dan static metode ialah pengecualiannya.

Static properti dan static metode ialah properti (faktor) dan metode (function) yang melekat ke class, bukan ke object. Ide static properti memang ‘agak keluar' dari ide object sebagai tempat lakukan proses, karena sebetulnya class cuma sebagai ‘blueprint' saja.

Untuk membuat static properti dan static metode, kita menambah kata kunci ‘static' sesudah penulisan akses tingkat properti atau metode, mirip contoh berikut ini:

// static property
public static $harga_beli;
 
// static method
public static function beli_laptop() {
   //...isi method
}

Dalam contoh di atas, saya memakai hak akses public, tapi kita bisa juga memakai hak akses lain seperti privat dan protected untuk static properti dan static metode.

Karena static properti dan static metode ialah punya class, karena itu kita tak perlu membuat object untuk mengaksesnya, tetapi langsung mengatakan nama class dan memakai operator ‘::', berikut contoh pengaksesan static properti dan static metode dari class laptop:

echo laptop::$harga_beli;
echo laptop::beli_laptop();

Panduan Langkah Penggunaan Static Properti dan Static Metode

Supaya lebih memahami langkah penggunaan static properti dan static metode,langsung kita masuk ke code 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 code di atas, saya membuat class laptop dengan 2 properti ‘biasa', 1 static properti dan 1 static metode. Lihat langkah mengkases keduanya tanpa membuat object.

Langkah Mengakses Static Properti dan Static Metode Dari Class Itu Sendiri

Bila kita memakai faktor $this untuk mengakses properti dan metode ‘normal' dari dalam class, karena itu untuk mengakses static properti dan static metode, kita memakai kata kunci "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 code program PHP di atas, saya memakai perintah self::$harga_beli, untuk panggil static properti dari dalam class laptop tersebut.

Langkah Mengakses Static Properti dan Static Metode Parent Class

Untuk class dengan penurunan (inheritance), kita dapat memakai kata kunci parent::nama_property dan parent::nama_method untuk mengakses static properti dan static metode dari parent class.

Misalkan class laptop ialah turunan dari class computer, kita dapat memakai perintah parent::beli_komputer() untuk mengakses static metode pada class computer dari dalam class laptop.

Berikut contoh pengaksesan static metode punya 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 code di atas, saya membuat class computer dengan sebuah static metode beli_komputer(). Metode ini mempunyai hak akses protected, hingga cuma dapat diakses dari dalam class tersebut atau dari dalam class turunan.

Class computer selanjutnya ‘diturunkan' ke class laptop. Dalam class laptop, saya membuat 2 buah static metode. Static metode beli_laptop() di set dengan hak akses privat, hingga tidak dapat diakses di luar class laptop.

Dalam metode beli_semua(), saya panggil metode beli_komputer() punya class computer memakai perintah parent::beli_komputer(). Ini ialah langkah panggilan static metode punya parent class. Selanjutnya masih dalam metode beli_semua(), saya panggil metode beli_laptop() dengan perintah self::beli_laptop(), karena metode ini berada di dalam class leptop tersebut.

Untuk mengetes apa metode beli_semua() sukses dijalankan, saya selanjutnya panggilnya dengan perintah laptop::beli_semua().

Lihat di bagian komentar diakhir code di atas. Bila kita coba panggil metode netbook::beli_laptop(), PHP akan keluarkan error karena metode beli_laptop() mempunyai hak akses privat, hingga tidak dapat dijangkau di luar class.

Saat membuat program berbasiskan object, penggunaan static properti (dan static metode) seharusnya dibatasi, karena static metode condong sulit diketahui bila terjadi kesalahan. Tetapi ide properti dan metode yang melekat ke class ini banyak pula dipakai untuk membuat desain pattern. Bahkan juga dalam frame-work PHP seperti laravel, static metode sebagai proses khusus untuk jalankan mayoritas code program.


Dalam panduan seterusnya, kita akan pelajari pengertian konstanta class dalam pemrograman object.