Membuat Chaining Method di PHP

Chaining Method salah satu pengembangan lanjut dari Pemrogaman Berorientasi Objek, tapi jangan khawatir akan kita kemas secara simpel!
683  
       

Sebelumnya, untuk memahami tulisan ini. Silakan pelajari dulu tentang konsep Pemrograman Berorientasi Objek. Untuk membaca artikel ini diharapkan telah mengetahui apa itu kelas, objek, properti, method, intansiasi, parameter, return value. Chaining Method atau metode berantai merupakan salah satu teknik pemrograman berorientasi objek dimana setiap function memungkinkan untuk dipanggil secara terus menerus tanpa harus memanggil dari objek induknya. Chaining method sering juga disebut mutator method, karena dengan serangkaian fungsi tersebut mampu memanipulasi isi dari sebuah properti didalam kelasnya.

Bentuk Umum Class di PHP

PHP mengenal juga class sebagaimana di bahasa pemrograman berorientasi objek lainnya. Adapun bentuk umumnya yaitu:

class NamaKelas {
public $namaPropertiKe1; //properti dari NamaKelas
public $namaPropertiKe2="x"; //properti dari NamaKelas
public function __construct(){
//didalam PHP 5.6 ke atas, tidak mengenal same method seperti di JAVA untuk membuat konstruktor
//isi dengan function yang selalu dipanggil
}
public function iniAdalahMetodeA($parameterKe1){
$this->namaPropertiKe1 = $parameterKe1; //didalam PHP juga ada this, sebagai alias dari current class
}
public function setNamaPropertiKe2($namaPropertiKe2){
//meskipun namanya sama namaPropertiKe2, ini nanti akan dibedakan dengan this
$this->namaPropertiKe2 = $namaPropertiKe2;
}
public function getNamaPropertiKe2(){
//seperti halnya Java, getter dan setter method bisa dilakukan juga disini
return $this->namaPropertiKe2; //mengembalikan nilai dari properti
}
}

Dari bentuk umum disana, maka bisa disimpulkan ada nama kelas, nama properti untuk menyimpan variable, nama method untuk mengakses dan menimpa nilai dari properti. Dari properti inilah, kita akan mulai merubahnya menjadi mutator method.

Konsep dasar Mutator Method

Mutator method pada dasarnya adalah untuk menyingkat kode yang kita gunakan supaya bisa dilakukan dalam satu baris atau bisa dilakukan cukup dengan 2 baris. Dengan kata lain, setiap metode yang ada pada objek yang sudah di instansiasi menghasilkan objek itu sendiri. Pasti sudah kebayangkan mari kita lihat bentuk umumnya.

Bentuk umum Mutator Method

Seperti yang dibahas dibagian sebelumnya, bahwa method dimutator itu harus menghasilkan objek itu sendiri maka:

class ContohMutator{
var $mutase;
public function __construct($mutase=""){
$this->mutase = $mutase;
}
public function addHello(){
$this->mutase .= "Hellow";
return $this;
}
public function setNama($nama){
$this->mutase .=" ".$nama."!";
return $this;
}
public function getMutase(){
return $this->mutase;
}
}

Dari kelas tersebut barulah kita dapat menyaksikan pertunjukan yang sebenarnya setelah diinstasiasikan.

Instasiasi Mutator Method

Berikut ini adalah contoh penerapan dari kode yang sebelumnya dibuat, untuk membuktikan bahwa chaining method berhasil

//ini untuk metode tanpa chaining;
$cm = new ContohMutator();
$cm->addHello();
$cm->setNama("Daeng");
echo $cm->getMutase()."<br />";
//ini untuk metode chaining
$cm2 = new ContohMutator();
echo $cm2->addHello()->setNama()->getMutase(); //jadi lebih sedikit;

Nah bagaimana? sudah keliatan bukan?

Contoh kode PHP Chaining Method

Berikut ini adalah contoh Chaining Method yang bisa digunakan untuk membuat kelas database query builder. Query builder ini mirip seperti active record yang ada di Code Igniter.

<?php
class DBManager {
private $selectables = array();
private $table;
private $whereClause;
private $limit;

public function select(){
$this->selectables = func_get_args();
return $this;
}

public function from($table){
$this->table = $table;
$this;
}

public function where($where){
$this->whereClause = $where;
return $this;
}

public function limit($limit){
$this->limit = $limit;
$this;
}
public function result(){
$query = "SELECT ";
// if the selectables is empty select all
if(empty($this->selectables)){
$query .= " * ";
}
//else select upon selectables and proceeding with building the query
$query = join(', ', $this->selectables). " FROM". $this->table;
if(!empty($this->whereClause)){
$query .= " WHERE". $this->whereClause;
}
if(!empty($this->limit)){
$query .= " LIMIT". $this->limit;
}
// for testing purpose only
echo 'Query returned '. $query;
}
}

// Now to use the class and see how METHOD CHAINING works
// let us instantiate the class DBmanager
$testOne = new DBManager();
$testOne->select()->from('users');
$testOne->result();
// this displays: Query returned SELECT * FROM users

$testTwo = new DBManager();
$testTwo->select()->from('posts')->where('id > 200')->limit(10);
$testTwo->result();
// this displays: Query returned SELECT * FROM posts
// WHERE id > 200 LIMIT 10

$testThree = new DBManager();
$testThree->select('firstname','email',
'country','city')->from('users')->where('id = 2399');
$testThree->result();
// This will dispaly: Query returned SELECT firstname,
// email,country,city FROM users WHERE id = 2399

Kesimpulan

Mutator method digunakan untuk mempersingkat dalam penulisan kode. Tapi mutator method ini tidak bisa digunakan sembarangan, karena metode ini haruslah dibangun atas dasar konsep yang kuat.

Demikian Semoga Membantu.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>