Tutorial Design Pattern : Penerapan Design Pattern Active Record di PHP

Malam ini saya nangkring di ITSolution, begadang untuk tugas design pattern (lagi), agar ketika UTS hari senin besok semua materi telah rampung. Setelah tadi sore tidak jadi untuk menggantikan pak dosen untuk mengajar, karena kebetulan saya ada pekerjaan mendadak. Datang ke kampus telat 30 menit, ditambah ketemu dengan mantan yang tambah bikin #galau. Saya tengok ke lab ternyata mahasiswanya sudah hilang semua. Baru kali ini saya tau bagaimana keadaan mahasiswa kelas malam di kampus, beda dengan mahasiswa kelas pagi yang rela menunggu dosen sampai pantat lumutan :p. Yaw jadilah saya kelayapan ke ITSolution untuk sekedar refreshing. Si Rifky, teman setia saya saat ber#galau ria ternyata tidak ada disana. Mungkin mau gantung diri kali yaw di pohon tomat, setelah tadi sore saya gojlog ramai-ramai bersama teman yang lainnya di warung pak giras :ngakaks:. Penyesalannya karena telah meninggalkan sang b***a sangat tampak di wajahnya, padahal dulu sudah saya pernah bilang “Kalau mau putus, dipikirin dulu. #MoveOn itu susah lho.”. Yaw daripada ngurusin orang #galau, mending kita lanjut untuk membahas design pattern. Nah…kali ini saya akan membahas design pattern Active Record, yang digunakan pada framework CodeIgniter.

Design pattern Active Record ini pasti sudah familiar untuk para pengguna setia framework CI, dimana dengan design pattern active record ini kita tidak perlu menuliskan query sql secara keseluruhan. Cukup hanya menuliskan parameternya saja, biasanya cuma parameter nama tabel, data yang ingin dimasukkan dan selection. Sekarang kita akan coba untuk membuat dan mengimplementasikan pattern active record sederhana ke dalam script PHP. Pattern active record yang terdapat di framework CI lebih kompleks daripada yang saya contohkan di bawah ini, bagi yang gak percaya, silahkan dibuka file db_active_rec.php yang ada di dalam folder system/database :).

<?php

class konek{
	public $host;
	public $user;
	public $pass;
	public $perintah;
	public $database;
	public $koneksi;

	function __construct($host_in,$user_in,$pass_in,$db_in)
	{
		$this->host=$host_in;
		$this->user=$user_in;
		$this->pass=$pass_in;
		$this->database=$db_in;

		$this->koneksi=mysql_connect($this->host,$this->user,$this->pass);
		if(!$this->koneksi)
		{
			echo "Koneksi gagal";
			exit();
		}

		$q=mysql_select_db($this->database,$this->koneksi);
		if(!$q)
		{
			echo "Database tidak ditemukan";
		}
	}

	public function query($q)
	{
		$p = $this->perintah=mysql_query($q);
		return $p;
	}

	public function insert($tbl,$arr)
	{
		$q = $this->query("insert into ".$tbl." (".implode(',',array_keys($arr)).") values (".implode(',',array_values($arr)).")");
	}

	public function delete($tbl,$arr)
	{
		$q = $this->query("delete from ".$tbl." where ".implode(',',array_keys($arr))."='".implode(',',array_values($arr))."'");
		return $q;
	}

	public function select($tbl,$kol)
	{
		$q = $this->query("select ".$kol." from ".$tbl."");
		return $q;
	}

	function __destruct()
	{
		$q = $this->query(mysql_close($this->koneksi));
		return $q;
	}
}

$k = new konek("localhost","root","","test_pattern");
for($i=1;$i<4;$i++)
{
	$k->insert("tbl_user",array('nama_awal'=>$i,'nama_akhir'=>$i,'email'=>$i));
}
$tampil = $k->select("tbl_user","*");
while($r=mysql_fetch_array($tampil))
{
	$k->delete("tbl_user",array('nama_awal'=>2));
	echo $r['nama_awal'].' - '.$r['nama_akhir'].' - '.$r['email'].'<br>';
}

?>

Hampir sama dengan postingan saya yang terdahulu, tentang Class PHP Sederhana. Cuma untuk penggunaan fungsi mysql_query saya pangkas cuma sekali saja, agar penggunaan resource memory lebih sedikit. OK deh, sekian dulu postingan saya tentang design pattern active record ini. Semoga bisa bermanfaat untuk kita semua.

Happy Blogging and Keep Coding

Cheerrrss….!!!!

2 comments

  1. TUKANG CoLoNG Reply

    baca tulisan PHP, jadi inget status gue sama dia.. PHP juga.. dia Pemberi Harapan Palsu.. ( ._.) #MalahCurhat

  2. Riyuka716 Reply

    bang, gimana cara penerapan “mysql_query”,,, ??? tolong kasih contohnya sekalian?