`

`
Powered by Blogger.

penerapan design pattern singleton di php



Design Pattern adalah sebuah solusi untuk masalah umum yang sering kita temui dan lakukan, yang membentuk sebuah pola (pattern) tertentu. Sehingga dibutuhkan sebuah desain yang bisa memanajemen pola tersebut, agar kode program lebih mudah dibaca, dipelihara, dan yang paling penting bisa diterapkan dalam sebuah tim kerja dalam skala besar. Dengan design pattern inilah nantinya terbentuk API yang bisa digunakan kembali oleh developer pihak ketiga.


Ada beberapa design pattern yang ada saat ini, diantaranya Singleton, Adapter, Registry, Factory, Observer dan masih banyak yang lainnya. Pada postingan kali ini, saya akan menjelaskan sedikit tentang penerapan design pattern singleton di PHP. Design pattern yang hampir selalu digunakan ini, berfungsi untuk mencegah terjadinya inisialisasi lebih dari satu kali dari sebuah class. Tujuannya untuk memangkas penggunaan memori. Biasanya diterapkan pada koneksi database dan pemanggilan library/plugin yang cukup diinisialisasi sekali saja.





Di atas ini, saya ambil contoh pada studi kasus ketika kita akan menggunakan class Koneksi. Dimana objek Koneksi dibuat sebanyak 3 kali, padahal sebenarnya cukup sekali saja untuk membuat objek Koneksi. Sama-sama menggunakan fungsi mysql_connect() (contohnya pada mysql), yang berbeda hanya perintah query. Otomatis gambar di atas sangat tidak efisien, karena memori harus menampung 3 objek Koneksi yang sama.





Gambar di atas adalah contoh alur program jika menggunakan design pattern singleton. Perintah-perintah query cukup menggunakan 1 objek Koneksi yang sudah diinisialisasi ketika pertama kali class Koneksi diakses. Di bawah ini, saya coba untuk membuat contoh penerapannya pada bahasa pemrograman PHP.



<?php

class Koneksi {

private $_dbase;

//menyimpan objek Koneksi
private static $_instance;
//menghitung berapa kali objek diakses
private static $_akses_koneksi = 0;

private function __construct()
{

$this->_dbase = "mysql";

//ditambahkan 1, setiap kali class objek diakses
self::$_akses_koneksi +=1;
echo "<p>Mengakses koneksi sebanyak ".self::$_akses_koneksi." kali</p>";
}
public static function cekInstance()

{

//jika objek $_instance kosong
if(is_null(self::$_instance))
{

//buat objek baru

self::$_instance = new self();
}
return self::$_instance;
}
public function prosesQuery($query)

{

//menampilkan data, melalui objek Koneksi
echo "

".$query . "


";
}
}



class AmbilQuery{
private $_isi_query;
private $_koneksi;
public function __construct($query)
{
$this->_isi_query = $query;
//mengecek instance dari class Koneksi
$this->_koneksi = Koneksi::cekInstance();
}
public function inQuery()
{
$this->_koneksi->prosesQuery($this->_isi_query);
}
}



//mencoba menampilkan data,
$q1 = new AmbilQuery("select * tbl_produk where kode_produk='C10'");
$q1->inQuery();
$q2 = new AmbilQuery("insert into tbl_produk values ('C14','Pasta Gigi','10000')");
$q2->inQuery();



?>



Dan ketika source code di atas dijalankan, maka akan terlihat counter untuk menghitung berapa kali class Koneksi diakses. Jika berjalan dengan benar, maka akan muncul pesan bahwa koneksi diakses sebanyak 1 kali.




Sumber : wikipedia&gedelumbung
Bagikan :
+
Previous
Next Post »
0 Komentar untuk "penerapan design pattern singleton di php"

 
Template By Kunci Dunia
Back To Top