Azis Hapidin
Membuat Custom Command Artisan di Laravel

Bagi yang sudah terbiasa menggunakan Framework Laravel, tentunya sudah tidak asing lagi dengan perintah Artisan seperti artisan make:controller <NamaController> untuk membuat Controller, artisan make:model <NamaModel> untuk membuat Model, dan lain sebagainya.

Nah pertanyaannya bisakah kita membuat perintah sendiri di artisan? Jawabannya sangat bisa, kita bisa membuat command di artisan ini sesuai dengan kebutuhan kita.

Biar artikel-nya tidak terlalu panjang, saya asumsikan temen-temen sudah punya sebuah project Laravel yang sudah siap tempur.

Membuat Command

Pertama kita harus membuat class command terlebih dahulu, pada contoh kali ini kita akan membuat sebuah perintah artisan untuk mengetahui Status Code HTTP dari sebuah website.

Buka terminal lalu arahkan ke direktori Project Laravel, kemudian jalankan perintah php artisan make:command SiteCheckController. Kemudian kita buka class yang sudah digenerate tadi di app/Console/Commands/SiteCheckController.php.

Isinya kurang lebih seperti ini:

<?php  
  
namespace App\Console\Commands;  
  
use Illuminate\Console\Command;  
  
class SiteCheckController extends Command  
{  
    /*  
     * The name and signature of the console command.  
     *  
     * @var string  
     */  
    protected $signature = 'command:name';  
  
    /*  
     * The console command description.  
     *  
     * @var string  
     */  
    protected $description = 'Command description';  
  
    /*  
     * Create a new command instance.  
     *  
     * @return void  
     */  
    public function __construct()  
    {  
        parent::__construct();  
    }  
  
    /*  
     * Execute the console command.  
     *  
     * @return mixed  
     */  
    public function handle()  
    {  
        //  
    }  
}

Pada property $signature kita isi dengan nama/command artisan kita beserta parameter (jika dibutuhkan). Untuk menambah parameter kita bisa menggunakan kurung kurawal. Contoh: namacommand {namaparameter}, jika ingin menambah deskripsi pada parameter kita bisa membuatnya seperti ini: namacommand {namaparameter : deskripsi parameter}.

Kemudian pada property $description kita bisa mengisinya dengan deskripsi command yang kita buat.

Kemudian kita bisa memasukan perintah yang akan di eksekusi pada method handle().

Sebagai contoh, ubah konten dari class tadi menjadi seperti ini:

<?php  
  
namespace App\Console\Commands;  
  
use Illuminate\Console\Command;  
  
class SiteCheckController extends Command  
{  
    /*  
     * The name and signature of the console command.  
     *  
     * @var string  
     */  
    protected $signature = 'checksite {url : URL Website yang ini dicek}';  
  
    /*  
     * The console command description.  
     *  
     * @var string  
     */  
    protected $description = 'Cek HTTP Status dari sebuah URL.';  
  
    /*  
     * Create a new command instance.  
     *  
     * @return void  
     */  
    public function __construct()  
    {  
        parent::__construct();  
    }  
  
    /*  
     * Execute the console command.  
     *  
     * @return mixed  
     */  
    public function handle()  
    {  
        $ch = curl_init($this->argument('url'));  
        curl_setopt($ch, CURLOPT_HEADER, true);    // we want headers  
        curl_setopt($ch, CURLOPT_NOBODY, true);    // we don't need body  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  
        curl_setopt($ch, CURLOPT_TIMEOUT,10);  
        curl_exec($ch);  
        $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
        curl_close($ch);  
  
        $this->info('HTTP code: ' . $httpcode);  
    }  
}

Seperti yang kita lihat diatas untuk mengambil argumen yang diberikan kita bisa menggunakan $this->argument('namaparameter') dan untuk menampilkan teks di Terminal kita bisa menggunakan $this->info(string). Jika ingin melihat apa saja yang bisa kita gunakan, temen-temen bisa cek dokumentasi resmi Laravel disini.

Tahap Pengetesan

Pertama kita jalankan php artisan untuk melihat list command artisan yang tersedia:

Sip, command yang kita buat tadi sudah terdaftar, lihat dibagian Available commands.

Kemudian kita cek deskripsi command yang kita buat tadi menggunakan php artisan help checksite:

Terakhir kita coba jalankan command tadi. Kita coba cek http status code dari beberapa domain seperti dibawah:

Oke sekian tutorial kali ini, informasi yang disampaikan di tutorial ini hanya gambaran sekilas saja. Untuk lebih lengkapnya temen-temen bisa buka langsung dokumentasi Laravel disini.

Terima kasih, mohon maaf bila ada kekurangan.

Typo:

  • Di deskripsi url (parameter) disana tertulis “URL Website yang ini dicek”, maksudnya “URL Website yang ingin dicek”.