KodeJs
Cara Membuat Custom Artisan  Command di Laravel 13 (CLI)
Laravel2 menit baca

Cara Membuat Custom Artisan Command di Laravel 13 (CLI)

Kembali ke Blog
Egi Samsul Mu'arifEgi Samsul Mu'arif12 September 20262 menit baca

Tutorial membuat perintah CLI sendiri menggunakan Custom Artisan Command di Laravel 13.

Setiap pengembang yang menggunakan Laravel 13 pasti terbiasa dengan perintah CLI seperti php artisan migrate, php artisan make:controller, atau php artisan route:list. Perintah-perintah ini sangat membantu mempercepat alur kerja pengembangan aplikasi.

Namun, pernahkah kamu membutuhkan perintah terminal buatan sendiri untuk menjalankan tugas khusus? Misalnya:

  • Mengimpor data massal dari file CSV ke database melalui terminal.

  • Memasang ulang data dummy untuk keperluan pengujian.

  • Mengirim notifikasi pengingat ke pengguna tertentu secara manual.

Di Laravel 13, kamu dapat membuat perintah terminal milikmu sendiri dengan sangat mudah menggunakan Custom Artisan Command.

Memahami Cara Kerja Artisan Command

Setiap perintah Artisan terdiri dari dua elemen utama:

  1. Signature (Nama Perintah): Kata kunci yang diketikkan di terminal (contoh: user:sync-data).

  2. Description (Deskripsi): Penjelasan singkat tentang fungsi perintah tersebut yang muncul saat menjalankan php artisan list.

┌─────────────────────────────────────────────────────────────────────────┐
│                    STRUKTUR CUSTOM ARTISAN COMMAND                      │
├────────────────────────────────┬────────────────────────────────────────┤
│ Komponen CLI                   │ Implementasi Kode                      │
├────────────────────────────────┼────────────────────────────────────────┤
│ • Signature (Perintah)         │ `protected $signature = 'user:clean';` │
│ • Options & Arguments          │ `user:clean {id} {--force}`            │
│ • Handler (Logika Eksekusi)    │ `public function handle() { ... }`     │
└────────────────────────────────┴────────────────────────────────────────┘

1. Membuat Class Command Baru

Gunakan generator Artisan bawaan untuk membuat berkas Command baru:

Bash

php artisan make:command SendWeeklyNewsletter

Perintah ini akan membuat file baru di lokasi app/Console/Commands/SendWeeklyNewsletter.php.

2. Menulis Logika Perintah CLI

Buka file app/Console/Commands/SendWeeklyNewsletter.php dan sesuaikan properti $signature, $description, serta isi metode handle():

PHP

namespace App\Console\Commands;

use Illuminate\Console\Command;
use App\Models\User;
use App\Jobs\SendNewsletterJob;

class SendWeeklyNewsletter extends Command
{
    /**
     * Nama perintah terminal (Cara memanggilnya: php artisan newsletter:send)
     */
    protected $signature = 'newsletter:send {category=all} {--limit=100}';

    /**
     * Deskripsi singkat perintah
     */
    protected $description = 'Kirim email newsletter mingguan ke pengguna berdasarkan kategori';

    /**
     * Logika utama yang dijalankan saat perintah diketik
     */
    public function handle(): int
    {
        // 1. Mengambil argumen dan opsi dari terminal
        $category = $this->argument('category');
        $limit = $this->option('limit');

        $this->info("Mulai memproses newsletter kategori: {$category} (Limit: {$limit})");

        // 2. Tampilkan progress bar sederhana di terminal
        $users = User::where('is_subscribed', true)->limit($limit)->get();
        
        $bar = $this->output->createProgressBar(count($users));
        $bar->start();

        foreach ($users as $user) {
            // Panggil Job atau kirim email di sini
            SendNewsletterJob::dispatch($user, $category);
            
            $bar->advance();
        }

        $bar->finish();
        $this->newLine();

        // 3. Tampilkan pesan sukses di akhir
        $this->info('Berhasil! Semua email newsletter telah dimasukkan ke antrean.');

        return Command::SUCCESS;
    }
}

3. Menjalankan Perintah di Terminal

Setelah menyimpan file tersebut, perintah buatanmu langsung terdaftar secara otomatis di ekosistem Artisan!

Buka terminal dan coba jalankan perintah baru milikmu:

A. Jalankan Perintah Default:

Bash

php artisan newsletter:send

B. Menambahkan Argumen & Opsi:

Bash

php artisan newsletter:send promo --limit=50

4. Menghubungkan Command dengan Task Scheduler

Perintah Custom Artisan Command yang sudah kamu buat dapat diintegrasikan dengan mudah ke dalam jadwal otomatisasi Task Scheduler di routes/console.php:

PHP

use Illuminate\Support\Facades\Schedule;

// Menjalankan perintah buatan sendiri setiap hari Senin pukul 08:00
Schedule::command('newsletter:send promo --limit=500')->weeklyOn(1, '08:00');

Kesimpulan

Membuat Custom Artisan Command di Laravel 13 memberikan fleksibilitas tinggi bagi pengembang untuk membangun alat bantu (internal tools) berbasis Command Line Interface (CLI). Fitur ini sangat berguna untuk tugas-tugas maintenance, migrasi data kompleks, maupun skrip internal yang perlu dijalankan secara manual maupun terjadwal.


Egi Samsul Mu'arif

Ditulis oleh

Egi Samsul Mu'arif

Web & Mobile Developer

Artikel Terkait

Lihat semua