Tutorial Design Pattern : Penerapan Design Pattern Registry di PHP

Akhirnya UTS untuk semester ganjil ini selesai juga tadi siang dan semua ujiannya hanya mengumpulkan tugas. Hmm..lumayan lah, karena terus terang saja saya sudah bosan sama yang namanya ujian tulis menulis. Karena menurut saya ujian seperti itu hanya sebagai formalitas dan tidak berguna sama sekali, mahasiswa dipaksa untuk menghafal teori-teori yang diajarkan, setelah itu yaw akan dilupakan begitu saja (pengalaman pribadi #haha). Dan sebagai sarana menghilangkan kepenatan, jadilah saya bersama teman-teman UKM & BEM untuk bermain futsal tadi sore. Lama juga saya gak main futsal, alhasil lutut jadi lecet gara-gara kebanyakan berseluncur ria di arena futsal. Udah dulu curhatnya :), sekarang saya akan menjelaskan sedikit tentang implementasi design pattern registry. Yuppz, lanjutan postingan tentang singleton yang kemarin.

Registry adalah sebuah design pattern yang bertujuan untuk mendaftarkan dan menyimpan properti-properti aplikasi yang dibutuhkan oleh kelancaran jalannya aplikasi. Contohnya ialah seperti penyimpanan konfigurasi, koneksi ke database, tema, nama aplikasi, dan yang lainnya. Properti-properti tersebut bisa juga disimpan dalam sebuah array, sehingga akan mudah dalam pengaksesannya secara global. 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. “Bagaimana…??? Makin paham kan dengan fungsi singleton…??? OK deh, sekian dulu postingan saya kali ini. Dan akan masih ada postingan selanjutnya tentang design pattern juga.

Happy Blogging and Keep Coding

Cheerrrss….!!!!

3 comments

  1. Banu Handito Reply

    gan ane mau tanya” lebih rinci nie, boleh ga gan minta nomor hp’y?
    maap ane komen di berbagai t4 biar cepet di bales gan, hehe

    • Gede Lumbung Post authorReply

      chat via YM aja gan, ane tiap hari OL kok…
      ane jarang bls sms, maklum gak ada pulsa…
      kalo ente mau beliin pulsa, monggo :p

Leave a Reply

Your email address will not be published. Required fields are marked *