Disadur dari : https://medium.com/swlh/10-laravel-helpers-that-you-should-know-9edbb78c2b0a
Laravel punya lo helper yang bahkan baru beberapa saya dengar, tapi ternyata sangat berguna dan membantu. Ini 10 di antaranya, yang diambil dari artikel medium di atas :
1. Logger
Logger berfungsi untuk melakukan perekaman aktivitas yang dilakukan. Misalnya kode di bawah ini akan menampilkan log ketika sebuah record pada tabel comment diubah. Apabila parameter tidak ada, maka logger akan menampilkan error. Tampilan log bisa dilihat di file storage/logs/laravel.log.
1 2 3 4 5 6 7 8 9 |
Route::get('/helpers', function() { $comment = Comment::find(1); // $comment = null; if($comment){ logger('Comment was changed.', ['id' => $comment->id]); }else{ logger()->error('An error occurred'); } }); |
1 2 |
[2020-08-07 00:47:37] local.ERROR: An error occurred [2020-08-07 00:49:45] local.DEBUG: Comment was changed. {"id":1} |
2. Array Divide
Arr::divide akan membagi array menjadi yang kita ingin. Di contoh, kita memiliki array yang terdapat pasangan key-value, kita bisa menggunakan Arr::divide untuk membuat array baru, misalnya array yang pertama berisi keys, dan array yang kedua berisi values dari array awal.
1 |
use Illuminate\Support\Arr; |
1 2 3 4 5 |
Route::get('/helpers', function() { [$keys, $values] = Arr::divide(['name' => 'James', 'age' => 33]); print_r($keys); print_r($values); }); |
1 2 |
$keys: ['name', 'age'] $values: ['James', 33] |
3. Blank
Fungsi helper ini akan mengecek apakah suatu nilai itu kosong. Kosong atau blank disini berarti null, string dengan spasi, array kosong, maupun string kosong.
1 2 3 4 5 6 7 8 9 |
blank(''); blank(' '); blank(null); blank(collect()); // Will result in: true blank(0); blank(true); blank(false); // Will result in: false |
4. Dump
Dump sama seperti dd di laravel. Pasti sudah familiar.
5. Path
Laravel helper yang berhubungan dengan path : app_path, base_path, config_path, database_path, public_path, resource_path, storage_path.
1 2 3 4 5 6 7 8 9 |
Route::get('/helpers', function() { echo "<br>App path: " . app_path(); echo "<br>Base path: " . base_path(); echo "<br>Config path: " . config_path(); echo "<br>Database path: " . database_path(); echo "<br>Public path: " . public_path(); echo "<br>Resource path: " . resource_path(); echo "<br>Storage path: " . storage_path(); }); |
1 2 3 4 5 6 7 |
App path: /Users/indocoder/Sites/learning/laravel-ref/app Base path: /Users/indocoder/Sites/learning/laravel-ref Config path: /Users/indocoder/Sites/learning/laravel-ref/config Database path: /Users/indocoder/Sites/learning/laravel-ref/database Public path: /Users/indocoder/Sites/learning/laravel-ref/public Resource path: /Users/indocoder/Sites/learning/laravel-ref/resources Storage path: /Users/indocoder/Sites/learning/laravel-ref/storage |
6. Slug
Slug sering digunakan untuk seo friendly url.
1 2 |
$slug = Str::slug('Laravel Is Awesome'); $slug: "laravel-is-awesome" |
Secara default, pemisahnya adalah ‘-‘. Jika ingin character yang lain, berikan pada parameter kedua:
1 2 |
$slug = Str::slug('Laravel Is Awesome', '&'); $slug: "laravel&is&awesome" |
7. Array has
Arr::has method digunakan untuk mencari nilai di dalam array. Returnnya adalah boolean, true atau false.
1 2 3 4 5 6 7 8 |
use Illuminate\Support\Arr; $blogs = ['blog' => ['title' => 'My blog', 'published' => true]]; $contains = Arr::has($blogs, 'blog.title'); // true $contains = Arr::has($blogs, ['blog.title', 'blog.published']); // true $contains = Arr::has($blogs, ['blog.title', 'blog.author']); // false |
8. UUID
Berguna untuk generate uuid.
1 2 |
use Illuminate\Support\Str; echo(string) Str::uuid(); // "2ad4abcc-8adc-47b6-b21e-9e5497a8af1b" |
9. Optional
Berguna untuk menghindari error apabila kita ingin melakukan relasi antar tabel. Misalnya : $post->user ? $post->user->name : null bisa dirubah jadi :
1 |
optional($post->user)->name; |
10. Pluck
Pluck berguna untuk mengambil value dari key suatu array :
1 2 3 4 5 |
$parents = [ ['parent' => ['id' => 1, 'name' => 'James']], ['parent' => ['id' => 8, 'name' => 'Lisa']], ]; Arr::pluck($parents, 'parent.name'); // ['James', 'Lisa'] |