Penggunaan static dan constant tidaklah dianjurkan, hanya untuk kasus-kasus tertentu saja. Dengan static property dan static method, property dan method dari Class bisa langsung diakses tanpa membuat instance dari Class.
Keyword static digunakan di belakang access modifier. Misalnya public static $merk atau public static function maju().
Untuk mengaksesnya NamaKelas::namaMethod() dan NamaKelas::$namaProperty.
Contoh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php Class Latihan{ //Static Property public static $namaProperty = 'Property Static'; //Static Method public static function namaMethod(){ return 'Saya adalah Static Method'; } } echo Latihan::$namaProperty . "<br>"; echo Latihan::namaMethod(); |
Untuk memanggil static property atau method dari dalam class, digunakan keyword self:: .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php Class Mobil{ private static $merk = 'Toyota'; private static function uppercase($merk){ return strtoupper($merk); } public static function getMerk(){ $merk = self::$merk; return self::uppercase($merk); } } echo Mobil::getMerk(); |
Penggunaan static menyebabkan method dan property bisa diakses dari luar saja, tanpa mengikuti kaidah encapsulation dari OOP. Jadi, menggunakan static ibaratnya kita tidak menggunakan OOP. Selain itu, static juga sulit untuk dilakukan testing.
Kapan kita menggunakan static? Untuk utilitas dan counter. Static property bisa digunakan bersama-sama oleh berbagai object.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php Class Mobil{ public static $km = 0; public function jalan($jarak){ self::$km += $jarak; } } $mobil1 = new Mobil(); $mobil1->jalan(10); echo Mobil::$km . "<br>"; $mobil2 = new Mobil(); $mobil2->jalan(5); echo Mobil::$km; |
Hasil dari shared propertynya :
10
15
Static untuk Utility Class
Utility Class adalah Class yang berisi method sederhana untuk mengerjakan tugas tertentu yang tidak terlalu vital terhadap aplikasi.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php class StringFormat{ public static function lowerCase($text){ return strtolower($text); } public static function upperCase($text){ return strtoupper($text); } public static function titleCase($text){ return ucwords($text); } } echo StringFormat::lowerCase('Utility Class') . "<br>"; echo StringFormat::upperCase('Utility Class') . "<br>"; echo StringFormat::titleCase('Utility Class') . "<br>"; |
Contoh lain tentang URL Redirect
1 2 3 4 5 6 7 8 9 10 |
<?php class Url{ public static function redirect($url){ header("Location: $url"); exit; } } Url::redirect('http://google.com'); |
Constant
Constant adalah variabel yang bernilai tetap, misalnya pi = 3,14. Gunakan keyword const.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php class Lingkaran{ const PI = 3.14; public function luas($jariJari){ return self::PI * pow($jariJari, 2); } } echo 'Jari - jari lingkaran: ' . Lingkaran::PI . "<br>"; $lingkaran = new Lingkaran(); echo 'Luas lingkaran : ' . $lingkaran->luas(14); |