Membuat Method Chaining di PHP5 min read

Pernah lihat kode seperti diatas? Dimana kita memanggil beberapa method dalam 1 baris atau 1 operasi saja. Itulah yang disebut dengan Method Chaining, Method Chaining adalah teknik agar kita bisa memanggil beberapa method secara langsung dalam 1 baris saja. 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:

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:

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 🙂