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;
}
}
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
}
}
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
contoh pemanggilan generateRandomCode() pada controller.
Gimana, menarik bukan?
selamat bereksperiment.
Top comments (0)