Tutorial Design Pattern : Penerapan Design Pattern Adapter di PHP

Udara pagi di kampung halaman cukup memberikan inspirasi untuk pikiran saya yang lagi jenuh ini. Biar tambah sippzz, saya isi dengan acara gowes-gowes sendiri keliling kota Denpasar. Sampe rumah, hasrat untuk melanjutkan postingan tentang design pattern muncul lagi. Pada postingan kali ini, saya akan membahas tentang design pattern adapter. Design pattern adapter berfungsi untuk menghubungkan 2 buah API class, contohnya yang sering kita temui ialah pada penggunaan koneksi ke database yang berbeda. Dimana pada class utama terdapat fungsi-fungsi yang tidak bisa dirubah, tetapi pada class yang lainnya kita juga membutuhkan beberapa method milik kelas utama. Disinilah fungsi adapter untuk menjembatani keduanya.

Konsep yang sama juga sering kita lihat pada plugin pihak ketiga yang sering diterapkan pada cms, dimana developer cms tidak mungkin menjangkau plugin-plugin yang dibuat oleh developer pihak ketiga. Dan ketika ada perubahan interface plugin/core aplikasi, seharusnya plugin-plugin buatan pihak ketiga masih bisa berjalan dalam beberapa waktu ke depan. Disinilah adapter menjalankan tugasnya. Di bawah ini, saya coba untuk menerapkan penggunaan design pattern adapter dalam permasalahan koneksi ke berbagai database yang berbeda dengan PHP.

Ada 3 file yang saya gunakan sebagai simulasinya yaitu database.php, mysqlAdapter.php, dan panggilDatabase.php. Class utamanya terdapat pada file database.php.

<?php
//database.php
class database
{
  private $host,$user,$pass,$db;
  private $tipe_db;
  private $query_db;

  function __construct($host_p,$user_p,$pass_p,$db_p)
  {
     $this->host = $host_p;
     $this->user  = $user_p;
     $this->pass = $pass_p;
     $this->db  = $db_p;
  }

  public function tipeDatabase($tipe_db_p)
  {
  	$this->tipe_db = $tipe_db_p;
  	return $this->tipe_db;
  }

  public function eksekusiQuery($query_p)
  {
  	$this->query_db = $query_p;
  	return $this->query_db;
  }
}
?>

Sekarang saya lanjutkan ke class adapter sebagai penghubungnya. Ciri dari design pattern adapter ialah ada fungsi di dalam class yang menggunakan object lain sebagai parameternya dan pada kasus ini, object class database digunakan sebagai parameter ketika pertama kali class diakses.

<?php
//mysqlAdapter.php
include_once('database.php');
class mysqlAdapter
{
  private $database;

  function __construct(database $database)
  {
    $this->database = $database;
  }
  public function bacaTipeDatabase($tipe)
  {
    return $this->database->tipeDatabase("mysql");
  }
  public function bacaTabelTunggal($field,$tbl,$seleksi)
  {
  	$q = "select ".$field." from ".$tbl." ".$seleksi."";
    return $this->database->eksekusiQuery($q);
  }
  public function insertTabelTunggal($tbl,$field,$value)
  {
  	$q = "insert into ".$tbl." ".$field." values ".$value."";
    return $this->database->eksekusiQuery($q);
  }
}
?>

Dan yang terakhir, ialah memanfaatkan class adapter sebagai jembatan untuk mengakses class database.

<?php
//panggilDatabase.php
include_once("mysqlAdapter.php");

$ob = new database("localhost","root","","db_testing");
$obAdapter = new mysqlAdapter($ob);
echo $obAdapter->bacaTabelTunggal("*","berita","where id_kategori='1'");
echo "<br>";
echo $obAdapter->insertTabelTunggal("berita","(judul,isi,gambar)","('Korupsi Merajalela','Kasus Korupsi Merajalela','korupsi.jpg')");
?>

Dengan database yang berbeda-beda cara pengaksesannya, maka dibutuhkan beberapa class adapter untuk masing-masing database. Inti dari design pattern adapter ini, ialah class inti tidak boleh diubah dan diakses langsung, maka dari itu digunakan adapter untuk perantara pengaksesannya. OK deh, sekian dulu postingan saya untuk kali ini. Semoga bisa bermanfaat untuk kita semua.

Happy Blogging and Keep Coding

Cheerrrss….!!!!

1 Comment

Leave a Reply

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