Sebelumnya, jika ingin memiliki sebuah konfigurasi yang bisa diakses secara global, konfigurasi didefinisikan sebagai variabel global. Teknik tersebut kurang efisien dalam penulisan kode dan sungguh menyulitkan jika ingin menambah properti, karena harus menambahkan ke file konfigurasinya. Di bawah ini, saya coba untuk membuat sebuah class yang memanfaatkan design pattern registry untuk menyimpan properti aplikasi pada bahasa pemrograman PHP.
<?php
class Registry {
private $_arr;
private static $_instance;
private static $_akses_koneksi = 0;
private function __construct($arr_properti)
{
$this->_arr = $arr_properti;
self::$_akses_koneksi +=1;
echo "<p>Mengakses koneksi sebanyak ".self::$_akses_koneksi." kali</p>";
}
public static function cekInstance($arr_properti)
{
//singleton untuk membatasi pembuatan objek
if(is_null(self::$_instance))
{
self::$_instance = new Registry($arr_properti);
}
return self::$_instance;
}
public function get($nama_index)
{
//untuk mendapatkan value dari properti
//diakses berdasarkan key-nya/index-nya
$isi = "";
if ($this->_arr[$nama_index]!=null )
{
$isi = $this->_arr[$nama_index];
}
return $isi;
}
public function set($nama_index,$isi)
{
//menambahkan properti baru
$this->_arr[$nama_index] = $isi;
return TRUE;
}
}
//penggunaannya pada class lain
class Konfigurasi{
private $_register;
public function __construct($conf)
{
$this->_register = Registry::cekInstance($conf);
}
public function getKonf($nama_index)
{
//memanfaatkan function get() yang dimiliki class Registry
//untuk menampilkan isi properti
$hasil = $this->_register->get($nama_index);
return $hasil;
}
public function setKonf($nama_index,$isi)
{
//memanfaatkan function set() yang dimiliki class Registry
//untuk menambah isi properti baru
$this->_register->set($nama_index,$isi);
return true;
}
}
//config default, dalam format array
$template_config = array(
'judul' => 'NgBlog Biar Gak GobloG - BlogNya Gede Lumbung',
'tema' => 'Liquify Equinox',
'direktori_tema' => '/wp-content/theme/liquify-equinox',
'status_seo' => 'aktif',
'javascript' => 'tidak aktif'
);
$config = new Konfigurasi($template_config);
echo $config->getKonf('judul') . "<br>";
echo $config->getKonf('tema') . "<br>";
echo $config->getKonf('direktori_tema') . "<br>";
$config->setkonf('status_seo', 'tidak aktif');
$config->setkonf('javascript', 'aktif');
echo $config->getKonf('status_seo') . "<br>";
echo $config->getKonf('javascript') . "<br>";
?>
Kode di atas saya kembangkan dari class singleton di postingan kemarin. Kembali saya memanfaatkan singleton dalam pembuatan class registry di atas, agar object tidak dibuat lebih dari sekali. Sejatinya, design pattern singleton dan registry memang saling berpasangan.
Sumber : wikipedia&gedelumbung
0 Komentar untuk "penerapan desain pattern registry di php"