Press "Enter" to skip to content

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel

fadli 0

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel.

Halo sobat cahaya.

Tutorial kali ini kita akan membahas bagaimana caranya membuat sebuah file melalui perintah artisan.

Perintah tersebut adalah sebuah perintah baru yang akan kita buat sendiri, yang memang belum ada di laravel.

Seperti yang kita ketahui bahwasanya secara default laravel memiliki beberapa perintah artisan yang ketika dijalankan akan menciptakan sebuah file baru.

Misalkan seperti ketika kita ingin membuat sebuah file controller maka kita akan menjalankan perintah artisan “php artisan make:controller NamaControllernya”.

Atau ketika ingin membuat sebuah file model, maka akan menjalankan perintah “php artisan make:model NamaModelNya”.

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel

Nah sekarang kita akan menciptakan sebuah command artisan baru untuk meng-generate sebuah file.

Anggap saja file tersebut kita sebut dengan file service.

Dan perintah artisan yang akan kita buat yaitu “php artisan make:service NamaFileServiceNya”.

Setiap perintah tersebut dijalankan, maka sistem akan membuat sebuah file baru didalam folder “../app/Services/..”. Jika folder tersebut belum ada, maka secara otomatis sistem juga akan membuatkan folder nya.

Instalasi Laravel

Disini saya menggunaka Laravel versi 10, tapi tutorial ini juga bisa diterapkan pada laravel versi 5, 6, 7, 8, atau 9.

Untuk cara instalasi nya bisa kalian buka halaman resmi nya disini.

Membuat Command Artisan Sendiri

Selanjutnya untuk dapat membuat perintah artisan sendiri, kita perlu meng-generate file command nya terlebih dahulu, jalankan perintah berikut:

....
php artisan make:command SangcahayaCommand
....

Maka nanti kita akan mendapatkan sebuah file baru didalam folder “../app/Console/Commands/” dengan nama SangcahayaCommand.php.

Isi dari file tersebut adalah seperti berikut ini:

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel

Kalau kalian perhatikan, file class tersebut terdiri dari 2 buah variable dan 1 buah method.

  1. Variable $signature berisi command artisan nya yang nanti akan kita panggil via terminal.
  2. Variable $description berisi deskripsi dari command nya.
  3. Method handle() diisi dengan logic yang akan dieksekusi saat command tersebut dipanggil.

Sebagai contoh, sekarang coba kalian modifikasi file command nya menjadi seperti berikut:

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel

Sekarang kita bisa menjalankan command artisan tersebut dengan menggunakan perintah seperti berikut ini:

....
php artisan make:service
....

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel

Command tersebut akan mengeksekusi kode yang berada di method handle():

....
Log::info('test command service by sangcahaya.id');
....

Sekarang kalo kalian cek file log nya, maka seharusnya akan muncul informasi seperti berikut ini:

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel

Menambahkan Argument Pada Command Nya

Sekarang kita akan coba tambahkan sebuah argument pada command nya, tujuan nya yaitu agar kita bisa menangkap apa yang user ketikkan.

Apa itu argument? Argument adalah sebuah string yang kita ketikkan setelah mengetikkan command nya, agar lebih mudah untuk dipahami, kalian bisa lihat contoh berikut:

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel

Point 1 adalah command, dan point 2 adalah argument nya.

Untuk menyediakan argument pada sebuah command, kita bisa membuat nya dengan menggunakan kurung kurawal, contoh nya adalah seperti berikut ini:

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel

Point 1 adalah cara kita menambahkan argument pada sebuah command nya.

Dan pada point 2 adalah cara kita memanggil argument tersebut.

Sekarang kalian bisa menjalankan command nya dengan cara seperti ini:

....
php artisan make:service CahayaService
....

Maka nanti hasilnya adalah seperti berikut ini:

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel

Menambahkan option pada Command nya

Kalo tadi adalah contoh untuk menambahkan argument pada command nya, sekarang kita akan coba tambahkan option pada command nya.

Apa itu option? Yang mana option? Kalian bisa cek gambar berikut ini untuk lebih memahami nya.

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel

Pada gambar diatas, no 1 adalah command nya, no 2 adalah argument nya, dan no 3 adalah option nya.

Sesuai nama nya, option itu bersifat optional, artinya tidak wajib diisi.

Untuk cara pembuatan option pada sebuah command yaitu menggunakan kurung kurawal ({}) dan strip 2 kali (–), contoh nya adalah seperti berikut ini:

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel

Dan untuk cara pemanggilan option nya, kita bisa menggunakan perintah seperti berikut:

....
$this->option('namaOptionNya');
....

Kemudian pada method handle() nya silahkan kalian coba modifikasi seperti berikut ini:

public function handle(): void
{
    $argument = $this->argument('filename');
    Log::info('test command service by sangcahaya.id, argument: ' . $argument);

    if ($this->option('testOption')) {
        Log::info('test option ' . $this->option('testOption'));
    }

    $this->info('The command was successful!');
}

Sekarang coba kalian jalankan command tersebut dengan menggunakan option dan tanpa option.

Tanpa option: “php artisan make:service TestCahayaService”.

Dengan option: “php artisan make:service TestCahayaService –testOption”.

Kalau kalian cek hasilnya didalam file log, maka akan berbentuk seperti ini:

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel

Yang nomor 1 adalah ketika kita menjalankan command nya tanpa option.

Dan yang nomor 2 adalah ketika kita menjalankan command nya dengan menggunakan option.

Membuat File Dengan Command Artisan Sendiri

Sekarang kita akan coba membuat sebuah file secara otomatis ketika command artisan tersebut dijalankan.

Cara nya gampang banget, kalian tinggal modifikasi saja file command nya menjadi seperti berikut ini:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\File;

class SangcahayaCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'make:service {service}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Create a new service';

    /**
     * Execute the console command.
     */
    public function handle(): void
    {
        $file_name = $this->argument('service');
        $path = $this->filePath($file_name);
        $this->createDir($path . 'Service');

        if (File::exists($path)) {
            $this->error("File {$path} already exists!");
            return;
        }

        File::put($path, $this->content_file($file_name));
        $this->info("File {$path} created.");
    }

    /**
     * Get the service full path.
     *
     * @param string $file_path
     *
     * @return string
     */
    public function filePath($file_path)
    {
        $file_path = str_replace('.', '/', $file_path) . '.php';
        $path = "app/Services/{$file_path}";

        return $path;
    }

    /**
     * Create service directory if not exists.
     *
     * @param $path
     */
    public function createDir($path)
    {
        $dir = dirname($path);

        if (!file_exists($dir)) {
            mkdir($dir, 0777, true);
        }
    }

    /**
     * isi content file nya
     */
    public function content_file($argument)
    {
        $data = <<<EOT
        <?php

        namespace App\Services;

        /**
         * @author sangcahaya.id
         */
        class $argument
        {

        }
        EOT;

        return $data;
    }
}

Kalau kalian perhatikan script diatas, pada baris ke-52, kita menentukan path/lokasi file yang akan kita generate, contoh diatas saya akan meletakkan nya didalam folder “../app/Services/”.

Sementara pada baris ke-62, terdapat sebuah method yang akan mengecek apakah path folder tersebut sudah ada atau belum, jika belum maka sistem akan membuatkan nya.

Sekarang coba kalian jalankan perintah artisan seperti berikut ini:

....
php artisan make:service CahayaService
....

Maka akan tercipta sebuah file baru bernama CahayaService.php yang berada didalam folder “../app/Services/”.

Cara Membuat File Dengan Command Artisan Sendiri Di Laravel

Gimana? Keren kan?

Support Us

Jika artikel ini bermanfaat untuk kamu, membantu menyelesaikan masalah yang sedang kamu hadapi, kamu juga bisa dukung kami dengan mengunjungi halaman berikut: https://saweria.co/sangcahayaid

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: