
Pendahuluan
Bayangin lagi ngerjain fitur sederhana, tapi lama-lama fungsi di Controller jadi membengkak gara-gara proses filtering, validasi, dan transformasi data yang saling menumpuk. Awalnya saya pikir cukup pakai if-else atau method privat, tapi begitu logic makin kompleks, kode jadi susah dites dan berantakan. Di sinilah Laravel Pipeline jadi penyelamat, karena ia memungkinkan kita memecah proses panjang jadi potongan-potongan kecil yang terisolasi.
Tips & Best Practices
- Di banyak project, biasanya saya mulai dengan membuat class Pipe kecil yang hanya fokus pada satu tugas saja, seperti sanitasi input atau logging, supaya testing-nya nggak bikin pusing.
- Saat ngerjain sistem yang melibatkan banyak tahapan, saya lebih suka memisahkan logic bisnis dengan infrastruktur lewat Pipeline agar tiap proses bisa dicolokkan (pluggable) kapan saja tanpa merusak alur utama.
- Saya sering banget pakai Pipeline buat middleware-like workflow di luar HTTP request, misalnya pas lagi ngolah data yang di-upload user lewat queue worker, supaya alurnya tetap konsisten.
Contoh Kode
Misalnya kita mau bersihin input user sebelum masuk database. Daripada ngoding panjang di Controller, mending kita pisah kayak gini:
$data = [ 'name' => ' Laravel Developer ', 'bio' => 'Cinta PHP' ];
$pipeline = app(Pipeline::class)
->send($data)
->through([
\App\Pipes\TrimString::class,
\App\Pipes\CapitalizeName::class,
])
->thenReturn();Variasi Implementasi
Kita bisa pakai array penuh dengan closure kalau logic-nya pendek, tapi untuk skala enterprise, menggunakan class-based pipes jauh lebih disarankan. Menggunakan class bikin tiap pipe bisa di-inject via Constructor, jadi kita bisa dengan mudah pakai Repository atau Service lain di dalamnya. Kalau cuma pakai closure, ketergantungan (dependency) bakal susah diurus kalau prosesnya makin ribet.
Kesalahan Umum
- Seringkali kita masukin semua logic berat ke dalam satu pipe, padahal intinya adalah memecah proses jadi unit-unit kecil yang independen.
- Lupa nambahin return $next($passable) di akhir logic, yang bikin alur pipeline macet total dan aplikasi jadi blank.
- Terlalu banyak pipe yang bikin alur jadi susah di-trace saat ada bug di tengah-tengah proses.
- Nggak mikirin urutan (order) pipe, padahal urutan sangat krusial karena output satu pipe adalah input bagi pipe berikutnya.
- Memaksakan pakai Pipeline untuk proses yang sebenarnya nggak butuh aliran data linear, malah bikin code base jadi over-engineered.
Ringkasan
Pakai Laravel Pipeline itu seperti menyusun LEGO; selama kita tahu potongan mana yang harus ditaruh duluan, hasilnya bakal rapi dan gampang banget dimodifikasi. Jangan takut buat bereksperimen dengan memecah fungsi-fungsi besar di project kalian. Begitu terbiasa, kalian bakal sadar kalau kode yang bersih itu bukan soal seberapa sedikit barisnya, tapi seberapa jelas alurnya saat dibaca ulang nanti.
Komentar
Posting Komentar