Azis Hapidin
Membuat Method Chaining di PHP

Pernah lihat kode seperti diatas? Dimana kita memanggil beberapa method dalam 1 baris saja. Itulah yang disebut dengan Method Chaining, Method Chaining adalah teknik agar kita bisa memanggil beberapa method secara secara berantai. Keuntungan jika kita menggunakan cara seperti ini adalah akan lebih mudah ketika kita menggunakan Class yang dibuat. Jika contoh kode diatas tidak menggunakan chaining method, maka kurang lebih akan menjadi seperti ini:

<?php

$student = new Student();
$student->setName('Azis Hapidin');
$student->setAddress('Buah Batu');
$student->setGender('Male')
$student->build();

Oh iya sebelum dilanjutkan saya asumsikan teman-teman sudah mengerti OOP dan faham cara penggunaan OOP di PHP ya 🙂

Method Chaining ini sebetulnya bisa kita terapkan di hampir semua bahasa pemrograman (CMIIW), akan tetapi pada contoh kali ini kita akan menunjukan implementasinya di PHP saja, bahasa pemrograman lain juga kurang lebih sama kok. Intinya adalah kita harus me-return object sendiri ($this) pada setiap method agar bisa dioperasikan lagi pada method selanjutnya, kecuali pada method akhir/final yang hanya akan mengembalikan nilai atau melakukan proses akhir.

Sudah terbayang? Jika belum, coba cek contoh kode dibawah:

<?php
 
class Student
{
    /**
     * Student's name.
     *
     * @var string
     */
    protected $name = '';
 
    /**
     * Student's gender.
     *
     * @var string
     */
    protected $gender = '';
 
    /**
     * Student's address.
     *
     * @var string
     */
    protected $address = '';
 
    /**
     * Set student's name.
     *
     * @param string $name
     * 
     * @return $this
     */
    public function setName($name = '')
    {
        $this->name = $name;
 
        return $this;
    }
 
    /**
     * Set student's gender.
     *
     * @param string $gender
     * 
     * @return $this
     */
    public function setGender($gender = '')
    {
        $this->gender = $gender;
 
        return $this;
    }
 
    /**
     * Set student's address.
     *
     * @param string $address
     * 
     * @return $this
     */
    public function setAddress($address = '')
    {
        $this->address = $address;
 
        return $this;
    }
 
    /**
     * Say Hi.
     *
     * @return string
     */
    public function sayHi()
    {
        return 'Hai nama saya ' . $this->name . ', saya seorang ' . $this->gender . ' dan saya tinggal di ' . $this->address;
    }
}
 
// Contoh Penggunaan 1:
$student = new Student();
echo $student->setName('Azis Hapidin')->setAddress('Buah Batu')->setGender('Laki-Laki')->sayHi();
 
echo '<br>';
 
// Contoh Penggunaan 2:
$student = new Student();
echo $student->setGender('Perempuan')->setAddress('Cianjur')->setName('Azizah')->sayHi();

Pada contoh diatas method setName(), setGender() dan setAddress() me-return $this karena itu setelah memanggil salah satu dari ketiga method diatas pada baris yang sama kita bisa kembali memanggil method lain yang ada di object tersebut. Namun pada method sayHi() kita tidak akan bisa lagi memanggil method lain karena method ini adalah method akhir/final (kebetulan return nya berupa string, nanti bisa apa aja sesuai kebutuhan).

Jika contoh kode diatas dijalankan, maka outputnya akan seperti ini:

Sampai sini mulai kebayang? Mudah-mudahan udah 😀 Agar lebih memahami lagi mungkin temen-temen bisa mencoba hal yang sama dengan kasus yang berbeda. Class, method, property, dsb nya bisa disesuaikan dengan keinginan/kebutuhan teman-teman, yang penting nilai kembalian return) dari method harus $this.

Oke sekian tutorial kali ini, semoga bermanfaat, jika masih ada yang kebingungan bisa curat coret di kolom komentar. Terima kasih 🙂