PHP: Mengakses property kelas anak dari kelas induk
Hari ini sempat kepikiran untuk membuat script php untuk memeriksa sebuah fitur pada web yang dibuat dengan Yii1. Ada beberapa pilihan agar pemeriksaan tidak mengurangi performa aplikasi.
Pertama, Membuat sebuah variabel pengenal didalam modul. tetapi cara ini terdapat kekurangannya yaitu jika yang harus diperiksa itu adalah sebuah controller yang tidak memiliki modul maka akan ada masalah baru.
Kedua, Membuat variabel didalam controller, namun cara ini juga ada kekurangannya yaitu akan banyak sekali controller yang perlu ditambahin variabel untuk pemeriksaan fitur.
Ketiga, Membuat variabel pada modul tetapi dengan catatan bahwa jika controller tidak mempunyai modul maka boleh dideklarasikan didalam controller. nah tantangannya adalah bagaimana memeriksa variabel pada kelas anak dari kelas induk. setelah cari-cari di google ternyata php dapat melakukan hal tersebut yaitu dengan mendeklarasikan variabel pada kelas anak sebagai variabel static.
Contoh:
<?php
class App
{
public function run() {
if(isset(static::$check) && static::$check == 1) {
echo "Fitur berbayar\n";
}else {
echo "Fitur gratis";
}
}
}
class CheckFeature extends App
{
static $check = 1;
}
class DontCheckFeature extends App
{
}
$cf = new CheckFeature();
$cf->run();
$dcf = new DontCheckFeature();
$dcf->run();
Jika dijalankan script diatas akan memberikan keluaran “Fitur berbayar” dan “Fitur gratis”. Dengan begitu saya tinggal menerapkannya pada aplikasi. Jika kamu ada saran atau opini silahkan merespon :).