DEV Community

Dhiecoderweb
Dhiecoderweb

Posted on • Originally published at dhiecoderweb.com

Cara Membuat Command Artisan Custom di Laravel

Laravel Artisan adalah command-line interface (CLI) bawaan Laravel yang sangat powerful. Selain ratusan command built-in seperti php artisan migrate atau php artisan make:model, kamu juga bisa membuat command sendiri. Custom Artisan command sangat berguna untuk mengotomasi tugas rutin seperti membersihkan data lama, mengirim laporan harian, atau sinkronisasi data dari API eksternal.

Membuat Command Baru

Gunakan Artisan untuk membuat skeleton command baru:

php artisan make:command SendDailyReport
Enter fullscreen mode Exit fullscreen mode

File akan dibuat di app/Console/Commands/SendDailyReport.php. Laravel 11 secara otomatis mendiscover command di folder ini, jadi tidak perlu registrasi manual.

Anatomi Command Laravel

Buka file yang baru dibuat dan pahami strukturnya:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class SendDailyReport extends Command
{
    // Signature: nama command dan argumen/option-nya
    protected $signature = 'report:daily
                            {type : Tipe laporan (sales/inventory)}
                            {--email= : Alamat email tujuan}
                            {--dry-run : Jalankan tanpa benar-benar kirim email}';

    // Deskripsi yang muncul di php artisan list
    protected $description = 'Kirim laporan harian ke admin via email';

    // Logic utama command
    public function handle(): int
    {
        $type    = $this->argument('type');
        $email   = $this->option('email') ?? 'admin@example.com';
        $dryRun  = $this->option('dry-run');

        $this->info("Menyiapkan laporan tipe: {$type}");

        if (! in_array($type, ['sales', 'inventory'])) {
            $this->error("Tipe laporan tidak valid. Gunakan 'sales' atau 'inventory'.");
            return Command::FAILURE;
        }

        // Simulasi generate laporan
        $this->withProgressBar(range(1, 5), function ($step) {
            sleep(1); // Simulasi proses
        });

        $this->newLine();

        if ($dryRun) {
            $this->warn("Mode dry-run: email tidak dikirim ke {$email}");
        } else {
            $this->info("Laporan {$type} berhasil dikirim ke: {$email}");
            // Di sini kamu panggil Mailable atau Notification
        }

        return Command::SUCCESS;
    }
}
Enter fullscreen mode Exit fullscreen mode

Artikel ini ditampilkan sebagian. Untuk pembahasan selengkapnya, beserta contoh dan langkah detailnya, Anda dapat membacanya pada sumber aslinya:

Cara Membuat Command Artisan Custom di Laravel

Tutorial pemrograman dan tools developer lainnya juga tersedia di dhiecoderweb.com.

Top comments (0)