Belajar Method Chaining dan Implementasinya dalam PHP

Ahmad Oriza 19 Agustus 2016

Belajar Method Chaining dan Implementasinya dalam PHP

Method chaining merupakan salah satu konsep yang ada dalam paradigma OOP untuk mengikat / merantai method. Disini kita dapat memanggil lebih dari satu method untuk satu kali operasi dengan mengolah object yang sama. Setiap method tersebut berperan mengubah nilai property dalam object tersebut dari satu bentuk ke bentuk lainnya. Oleh karena itu method tersebut sering disebut mutator. Konsep chaining ini sendiri sudah diimplementasikan dalam berbagai bahasa pemrograman yang mendukung OOP seperti Java, Python, Javascript, Ruby, dan PHP.

Manfaat dari penggunaan method chaining adalah membuat kode yang lebih enak dibaca. Coba perhatikan contoh kode berikut ini.

// Tanpa chaining
$object = new Class();
$object->method_satu();
$object->method_dua();
$object->method_tiga();

// Dengan chaining
$object = new Class();
$object->method_satu()->method_dua()->method_tiga();

Nah, alih-alih memanggil method di beberapa baris kode, kita dapat membuat rantai method dalam satu baris kode. Dengan demikian kode akan terlihat lebih pendek.

Praktek Method Chaining

Mari kita coba membuat method chaining sederhana dengan menggunakan PHP. Kita akan membuat sebuah kelas bernama "StringMutator" yang berfungsi memanipulasi string. Dalam kelas tersebut, terdapat tiga method yang fungsinya sudah tidak asing lagi di telinga kita.
  1. Bold, menebalkan kalimat
  2. Italic, membuat kalimat menjadi cetak miring
  3. Underscore, menambahkan garis bawah dalam kalimat
Struktur kodenya akan terlihat seperti ini :
class StringMutator {
    // Property untuk simpan nilai-nilai mutasi
    protected $word;
public function __construct($word) {
    // Konstruktor
}

public function bold() {
   // Menebalkan kata
}

public function italic() {
   // Membuat cetak miring 
}

public function underscore() {
   // Menambahkan garis bawah
}

public function get() {
   // Mengambil nilai mutasi akhir
}

}

Bisa dilihat kita membutuhkan satu property bernama $word untuk menyimpan nilai mutasi. Di baris selanjutnya kita butuh sebuah magic method construct untuk mendefinisikan kata yang mau diolah ketika object diciptakan. Selanjutnya kita butuh 3 method (Bold, Italic, Underscore) untuk kemudian kita isi operasinya.

Oke, mari kita modifikasi kelas dan mengisi setiap method dengan operasi sebenarnya. Pada kelas ini kita akan menambahkan operasi bold, italic, dan underscore dengan cara memodifikasi string dengan menambahkan "html" saja, kurang lebih hasilnya seperti ini :

class StringMutator {

    protected $word;

    public function __construct($word) 
    {
        $this->word = $word;
    }

    public function bold() {
        $this->word = '<b>' . $this->word . '</b>';
        return $this;
    }

    public function italic() {
        $this->word = '<i>' . $this->word . '</i>';
        return $this;
    }
    
    public function underscore() {
        $this->word = '<u>' . $this->word . '</u>';
        return $this;
    }
    
    public function get() {
        return $this->word;
    }
}

Perhatikan method bold, italic, dan underscore yang kita buat. Setiap operasinya hanya meng-override nilai $word dan menyisipkan karakter html. Inilah salah satu contoh mutasi nilai. Perhatikan juga akhir dari setiap method, ada kode return $this;. Kode tersebut berfungsi mengembalikan object untuk kemudian dioperasikan lagi pada method selanjutnya. Dan terakhir method get() yang berfungsi untuk mengembalikan nilai final.

Mari kita coba class tersebut, kita akan mengolah string ini "Saya Belajar Method Chaining". Penjelasannya juga saya tambahkan di bagian komentar :

...
$word = 'Saya Belajar Method Chaining';

// Membuat object dan mendefinisikan string yang akan diolah 
$string_mutator = new StringMutator($word); 

// Contoh 1
// Operasi bold
$result = $string_mutator->bold()->get();
echo $result;

echo '<hr/>';

// Contoh 2
// Operasi bold + italic
$result = $string_mutator->bold()->italic()->get();
echo $result;
echo '<hr/>';

// Contoh 3
// Operasi bold + italic + underscore
$result = $string_mutator->bold()->italic()->underscore()->get();
echo $result;

Nah, hasilnya akan tampil seperti berikut :

chaining Contoh 1 menghasilkan operasi bold saja, contoh 2 menghasilkan operasi bold ditambah italic, dan terakhir output contoh 3 mengasilkan semua operasi.

Demikian contoh sederhana dari penggunaan method chaining. Jika ada pertanyaan silahkan isi kolom komentar. Semoga bermanfaat!

 

Cover: udemy.com