DEV Community

Cover image for Membuat Custom Helper di Laravel
Muhammad Eko Pujianto
Muhammad Eko Pujianto

Posted on

Membuat Custom Helper di Laravel

img codeku

Pernah dengar istilah custom helper di laravel? saya rasa sudah tidak asing untuk para developer laravel.
generateRandomCode('EN', 8); merupakan function yang dibuat sendiri dan bisa di akses pada semua file php di project laravel kita.

Bagaimana membuat ini?

mari kita bereksperiment :

1. Buat file Helpers.php pada path app/Helpers.php

Buatlah file bernama Helpers.php pada path app/Helpers.php, ingat perhatikan case-sensitivnya penulisan helpers.php dengan Helpers.php , mungkin di local development ini bisa running well, namun belum tentu di production. Karena itu sudah hal yang berbeda.

<?php

use Illuminate\Support\Str;

if (!function_exists('generateRandomCode')) {
    /**
     * Generates a random code by combining the current date and a random string.
     *
     * @return string The generated random code.
     */
    function generateRandomCode($prefix = null, $length = 4): string
    {
        // Get the current date in the format 'Ymd'
        $currentDate = date('Ymd');

        // Generate a random string of length 4
        $randomString = strtoupper(Str::random($length));

        // Combine the current date and the random string
        $randomCode = $currentDate . $randomString;
        if (!is_null($prefix)) {
            $randomCode = $prefix . $randomCode;
        }
        return $randomCode;
    }
}
Enter fullscreen mode Exit fullscreen mode

Di atas merupakan contoh kode dari function generateRandomCode(), tentu ini bisa disesuaikan dengan yang kita butuhkan.

2. Tambahkan file Helpers.php pada file composer.json

{
  "autoload": {
    "psr-4": {
      "App\\": "app/",
      "Database\\Factories\\": "database/factories/",
      "Database\\Seeders\\": "database/seeders/"
    },
    "files": ["app/Helpers.php"] // <-- tambahkan ini
  },
  "autoload-dev": {
    "psr-4": {
      "Tests\\": "tests/"
    },
    "files": ["app/Helpers.php"] // <-- tambahkan ini
  }
}
Enter fullscreen mode Exit fullscreen mode

fokus pada baris kode yang saya berikan tanda // <-- tambahkan ini, ini yang harus kita tambahkan di file composer.json. Berdasarkan pengalaman saya autoload dan autoload-dev ini berbeda, kurang lebih seperti ini:

  • autoload : berjalan untuk production
  • autoload-dev : berjalan untuk development

efeknya apa, jika kita hanya menuliskan di satu sisi saja, semisal hanya di autoload-dev, mungkin saat development di local itu running well, namun saat naik ke production pasti akan muncul error undefined. Karena dianggap helper tidak pernah ada di production.

3. Running Autoload nya
Buka terminal dan run composer dump-autoload

Finnaly, kita dapat memanggil custom function dari Helpers seperti ini :

$newTrx = new ProductTransaction();
$newTrx->code = generateRandomCode('EN', 8); // <- ini
Enter fullscreen mode Exit fullscreen mode

contoh pemanggilan generateRandomCode() pada controller.

Gimana, menarik bukan?

selamat bereksperiment.

Top comments (0)