Pernah nggak sih kamu merasa controller di project Laravel makin lama makin gemuk dan susah di-maintain? Tenang, kamu nggak sendirian! Banyak developer Laravel yang mengalami hal serupa, apalagi kalau aplikasi makin berkembang dan logic bisnis makin kompleks. Nah, di artikel ini kita bakal bahas solusi modern yang lagi naik daun: Laravel Actions.
Laravel Actions itu apa sih? Sederhananya, Actions adalah class khusus yang tugasnya menangani satu aksi atau proses bisnis tertentu. Jadi, logic yang tadinya numpuk di controller bisa dipindah ke Action, bikin controller jadi lebih ramping dan mudah dibaca. Konsep ini sangat cocok buat kamu yang pengen codebase tetap rapi, gampang di-test, dan scalable.
Yuk, kita bahas step-by-step mulai dari konsep dasar, alasan pakai Actions, sampai contoh implementasi di Laravel versi terbaru (Laravel 11+). Artikel ini cocok banget buat pemula, jadi jangan khawatir kalau kamu baru mulai belajar Laravel!
Deskripsi Singkat Laravel Actions
Laravel Actions adalah class PHP yang biasanya hanya punya satu method utama, misal execute()
, untuk menjalankan satu tugas spesifik. Mirip “command object” di pattern OOP. Dengan Actions, kamu bisa:
- Memisahkan logic bisnis dari controller
- Reuse logic di banyak tempat (controller, job, event, dsb)
- Unit test lebih mudah
Kenapa Harus Pakai Actions? Controller yang gemuk bikin pusing! Dengan Actions, kamu dapat:
- Controller lebih ramping: Fokus ke alur aplikasi, bukan detail logic
- Test lebih gampang: Logic bisnis bisa di-test tanpa HTTP layer
- Reusable: Satu Action bisa dipakai di banyak tempat
- Lebih terstruktur: Logic bisnis nggak tercecer di mana-mana
Contoh Kasus: Membuat Postingan Baru Biasanya, logic bikin postingan ada di controller kayak gini:
// app/Http/Controllers/PostController.php
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required',
'body' => 'required',
]);
$post = Post::create($validated);
// Mungkin ada logic lain: kirim notifikasi, dsb
return response()->json($post);
}
Kalau logic makin banyak, controller makin panjang dan susah di-maintain. Nah, dengan Actions, kita bisa refactor kayak gini:
// app/Actions/CreatePost.php
namespace App\Actions;
use App\Models\Post;
class CreatePost
{
public function execute(array $data): Post
{
$post = Post::create($data);
// Bisa tambahkan logic lain: event, notifikasi, dsb
return $post;
}
}
Controller jadi lebih ramping:
// app/Http/Controllers/PostController.php
use App\Actions\CreatePost;
public function store(Request $request, CreatePost $createPost)
{
$post = $createPost->execute($request->validated());
return response()->json($post);
}
Struktur Folder Sederhana:
app/
Actions/
CreatePost.php
Http/
Controllers/
PostController.php
Models/
Post.php
Kapan Harus Pakai Actions?
- Kalau logic di controller lebih dari satu langkah
- Logic yang sama dipakai di beberapa tempat
- Aplikasi makin besar dan butuh maintainability
- Tim kerja lebih dari satu orang
Kalau cuma CRUD sederhana, Actions kadang overkill. Tapi kalau aplikasi sudah mulai kompleks, Actions sangat membantu.
Tips Migrasi ke Actions (Decision Tree Sederhana) Bayangkan kamu lagi refactor controller:
- Apakah method controller melakukan lebih dari satu hal? Kalau ya, pertimbangkan pakai Action.
- Apakah logic itu dipakai di tempat lain? Kalau ya, wajib pakai Action!
- Kalau logic sangat sederhana dan hanya dipakai sekali, boleh tetap di controller.
Performance? Tenang, Actions itu cuma class PHP biasa, nggak ada overhead berarti. Laravel container juga resolve dependency dengan sangat efisien.
Best Practice dan Tips
- Satu Action = satu tugas spesifik
- Beri nama class dan method yang jelas, misal
CreatePost
,UpdateProfile
, dsb - Tambahkan test unit untuk setiap Action
- Gunakan dependency injection untuk resource yang dibutuhkan
- Dokumentasikan setiap Action, apalagi kalau logicnya penting
Error yang Sering Dialami Pemula
- Lupa inject Action di controller (pastikan sudah di constructor atau parameter method)
- Salah namespace (pastikan namespace Action sudah benar)
- Lupa validasi data sebelum kirim ke Action
Resource & Dokumentasi Resmi
Ringkasan & Langkah Selanjutnya Laravel Actions bukan “obat ajaib” yang langsung bikin codebase sempurna, tapi sangat membantu menjaga controller tetap ramping dan logic bisnis lebih terstruktur. Untuk tim yang ingin maintainability dan testability, Actions adalah solusi modern yang layak dicoba.
Yuk, mulai refactor controller kamu sedikit demi sedikit. Jangan takut trial-error, karena belajar programming memang butuh proses. Semangat belajar dan happy refactoring! 🚀