Berikut Penjelasan Fitur Terbaru Pada Framework Laravel 8

| |

Laravel Merupakan Framework PHP terpopuler saat ini telah merilis versi terbaru yaitu Laravel 8. Tepatnya pada tanggal 08 September 2020 yang lalu. Perlu dicatat bahwa Laravel 8 bukanlah versi Long Term Support (LTS). Laravel 8 akan mendapatkan perbaikan bug sampai 8 Maret 2021. Untuk dukungan perbaikan security sampai 8 September 2021.
Dilansir dari laman resminya fitur baru di Laravel 8 diantaranya.


•    Laravel Jetstream
•    Model Factory
•    Migration Squashing
•    Job Batching    
•    Peningkatan pada Rate Limiting
•    Peningkatan pada Maintenance Mode
•    Peningkatan pada Queue
•    Komponen Dinamis pada Blade
•    Tailwind Pagination View
•    Time Testing Helper
•    Peningkatan pada Artisan serve


Laravel Jetstream


Laravel Jetstream adalah sebuah utilitas kerangka pembuatan (scaffolding) untuk Laravel. Dengan Jetstream pengembang dapat menghemat waktu karena berbagai fitur-fitur utama yang ada pada sebuah web app secara otomatis tersedia dan siap digunakan.
Fitur-fitur tersebut diantaranya login, registrasi, verifikasi email, 2FA (two factor authentication), manajemen session, API via Laravel Sanctum dan manajemen team.
Laravel Jetstream menggantikan Laravel UI yang sebelumnya digunakan untuk melakukan scaffolding pembuatan web app.

Model Factory


Taylor Otwell tweet dan mengumumkan ke versi laravel 8 berikutnya akan memiliki direktori baru "Models" untuk semua Model Eloquent dan saya suka fitur ini.
Saat ini semua model disimpan default di folder aplikasi seperti app/User.php, app/Post.php dll. Tetapi laravel 8 menyediakan direktori baru "Models" untuk menyimpan semua model pada folder tersebut.

Direktori app/Models
Karena permintaan yang cukup banyak dari komunitas maka sekarang default dari model berada didalam direktori app/Models. Anda dapt melihatnya langsung lewat GitHub di branch master untuk perubahan ini.
Jika direktori app/Models tidak ada maka diasumsikan model harus ditempakan di app/ direktori.

<?php

namespace Database\Factories;

use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class UserFactory extends Factory
{
    protected $model = User::class;

    public function definition()
    {
        return [
            'name' => $this->faker->name,
            'email' => $this->faker->unique()->safeEmail,
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
            'remember_token' => Str::random(10),
        ];
    }
}


Karena developer pada class Model dapat menggunakan trait HasFactory maka pada model factory dapat digunakan cara berikut.

<?php
use App\Models\User;

User::factory()->count(50)->create();


Migration Squashing


Ketika jumlah file migrasi sudah sangat banyak hal tersebut sedikit banyak mempengaruhi kecepatan migrasi. Selain itu tidak jarang jika perubahan sudah mencapai puluhan atau ratusan file sudah hampir tidak ada yang ingin membaca dari pertama hingga migration terakhir. Jika menggunakan MySQL atau PostreSQL maka sekarang developer dapat melakukan “squash” atau menyatukan file-file migration tersebut menjadi hanya sebuah file SQL.
Perintah yang digunakan untuk melakukan migration squash.

$ php artisan schema:dump


Jika ingin melakukan dump sekaligus menghapus file migration tambahkan opsi --prune.

$ php artisan schema:dump --prune


Hasil dump atau squash akan diletakkan pada direktori database/schema. File SQL yang ada pada direktori tersebut akan dieksekusi terlebih dahulu sebelum file-file migration.

Job Batching


Job Batching memudahkan developer dalam mengeksekusi beberapa Jobs sekaligus kemudian melakukan langkah lanjutan dengan memanggil callback ketika semua Jobs selesai dieksekusi. Developer dapat menggunakan method Bus::batch() untuk mengelompokkan Jobs.

use App\Jobs\ProcessPodcast;
use App\Podcast;
use Illuminate\Bus\Batch;
use Illuminate\Support\Facades\Batch;
use Throwable;

$batch = Bus::batch([
    new ProcessPodcast(Podcast::find(1)),
    new ProcessPodcast(Podcast::find(2)),
    new ProcessPodcast(Podcast::find(3)),
    new ProcessPodcast(Podcast::find(4)),
    new ProcessPodcast(Podcast::find(5)),
])->then(function (Batch $batch) {
    // All jobs completed successfully...
})->catch(function (Batch $batch, Throwable $e) {
    // First batch job failure detected...
})->finally(function (Batch $batch) {
    // The batch has finished executing...
})->dispatch();

return $batch->id;


Peningkatan pada Rate Limiting

Rate Limiting dapat didefiniskan dengan facade RateLimiter menggunakan for method. Method for menerima argumen berupa nama dan Closure yang harus mengembalikan konfigurasi Rate Limiting menggunakan facade Limit.

use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;

RateLimiter::for('global', function (Request $request) {
    return Limit::perMinute(1000);
});


Closure dari for menerima instance dari object Request sehingga konfigurasi dapat dibuat on-the-fly berdasarkan kriteria tertentu.

RateLimiter::for('uploads', function (Request $request) {
    return $request->user()->vipCustomer()
                ? Limit::none()
                : Limit::perMinute(100);
});


Untuk melakukan limit per alamat IP dapat digunakan method by.

RateLimiter::for('uploads', function (Request $request) {
    return $request->user()->vipCustomer()
                ? Limit::none()
                : Limit::perMinute(100)->by($request->ip());
});


Peningkatan pada Maintenance Mode
Pada versi Laravel sebelumnya perintah artisan down dapat di-bypass menggunakan “allow list” dari alamat IP yang diperbolehkan untuk mengakses aplikasi selama maintenance mode.
Fitur ini dihapus dan digantikan dengan penggunaan token.

$ php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"


Token tersebut dapat digunakan untuk melakukan bypass maintenance mode dengan mengunjungi base URL dari aplikasi.

https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515


Laravel akan membuat cookie dan meredirect ke halaman root /. Cookie tersebut yang menjadi penanda bahwa website dapat digunakan seperti biasa.
Fitur baru yang ditambahkan adalah perlakuan khusus untuk segera menampilkan halaman ketika maintenance mode. Ini berguna jika saat maintance kemudian developer melakukan update lewat composer sehingga terkadang membuat pengguna masih melihat halaman yang sebenarnya.
Perintah yang digunakan untuk melakukan pre-render halaman maintance.

$ php artisan down --render="errors::503"


Peningkatan pada Queue
Terdapat method baru catch yang digunakan untuk menangkap kesalahan ketika Closure yang dijalankan pada queue gagal.
use Throwable;

dispatch(function () use ($podcast) {
    $podcast->publish();
})->catch(function (Throwable $e) {
    // This job has failed...
});


Komponen Dinamis pada Blade
Terkadang ketika melakukan render sebuah komponen pada blade tidak diketahui komponen yang mana hingga sampai pada runtime. Pada situasi seperti ini developer dapat menggunakan fitur baru dari Blade yaitu dynamic-component.

<x-dynamic-component :component="$componentName" class="mt-4" />


Tailwind Pagination View
Laravel Paginator sekarang secara default akan menggunakan Tailwind CSS framework. Untuk view yang menggunakan Bootstrap 3 dan Bootstrap 4 akan tetap tersedia.
Time Testing Helper
Ini fitur yang cukup unik karena memudahkan developer ketika berhubungan dengan pengaturan waktu saat melakukan unit testing. Class bawaan Laravel untuk tes sekarang mendukung modifikasi waktu menggunakan method travel.

public function testTimeCanBeManipulated()
{
    // Travel into the future...
    $this->travel(5)->milliseconds();
    $this->travel(5)->seconds();
    $this->travel(5)->minutes();
    $this->travel(5)->hours();
    $this->travel(5)->days();
    $this->travel(5)->weeks();
    $this->travel(5)->years();

    // Travel into the past...
    $this->travel(-5)->hours();

    // Travel to an explicit time...
    $this->travelTo(now()->subHours(6));

    // Return back to the present time...
    $this->travelBack();
}


Peningkatan pada Artisan serve


Pada versi Laravel sebelumnya jika sebuah konfigurasi environment yang disimpan .env diubah maka developer juga harus melakukan restart artisan serve.
Kini pada Laravel 8 hal itu tidak diperlukan karena secara otomatis Laravel akan mendeteksi perubahan tanpa perlu intervensi manual untuk merestart local web server yang dijalankan dari artisan serve.

Enhanced Rate Limiting


Fitur hebat lainnya oleh laravel 8. Anda dapat menentukan batas rate untuk route Anda. jika Anda sedang membangun proyek api atau beberapa proyek ERP maka Anda harus menetapkan batas untuk mengaktifkan permintaan di api Anda atau mengunduh file jika tidak, server kami dapat turun jika seseorang memecat begitu banyak permintaan.

Enhanced on Route Caching


Kami hampir menggunakan cache laravel untuk view, config dan route. Sedangkan untuk route kita menggunakan perintah "php artisan route:cache" untuk cache route.
Di versi laravel sebelumnya, Anda dapat menyimpan route dan kemudian jika Anda menambahkan route baru pada file route maka itu masalah penutupan. Tetapi laravel 8 menyelesaikan masalah itu, jika Anda akan menambahkan route baru maka itu akan menambahkannya secara otomatis pada file cache.
Jadi, laravel 8 menyediakan middleware batas kecepatan di sana Anda dapat mengatur jumlah permintaan per waktu. saya akan menunjukkan kepada Anda bagaimana Anda dapat mengatur dengan laravel 8

Update Syntax for Closure Based Event Listeners
Laravel 8 mengubah sintaks untuk memanggil event listener.

Queueable Model Event Listeners


Fitur hebat baru lainnya yang saya suka. ketika Anda memanggil model creating, created, updating, updated dll maka Anda juga dapat melakukannya dengan mudah.
Kadang-kadang, kami mengirimkan pemberitahuan email ke admin ketika membuat produk baru sehingga mungkin perlu waktu untuk mengirim email. jadi di backend Anda bisa menggunakan event model eloquent laravel dengan queueable.

Maintenance mode: secret access
Jika Anda ingin website down and up maka kami menggunakan perintah berikut:
php artisan down
php artisan up
Tetapi ketika Anda ingin menampilkan ambang situs web ketika Anda mengunggah di server ke beberapa orang maka Anda tidak dapat memberi.
Laravel 8 memberikan cara Anda dapat membuat rahasia untuk memberikan akses kepada banyak orang. Anda bisa menggunakan secret dan mengabaikan cookie

Maintenance mode: pre-rendered page
Laravel 8 menambahkan opsi baru untuk segera menampilkan kembali halaman ketika situs web Anda turun. Anda dapat menggunakan opsi render dengan jalur file dan itu akan menampilkan file itu hingga situs web.

Queued job batching


Laravel 8 menyediakan fitur baru Queued job batching sehingga Anda dapat menambahkan banyak pekerjaan ke antrian sekaligus sebagai batch. ada callback then(), catch() dan finally() yang akan diaktifkan pada semua tugas yang akan selesai.

Queue backoff()


Laravel 8 menambahkan metode baru backoff() ketika Anda dapat mendefinisikan di Queue job class Anda. Anda dapat menentukan waktu bilangan dengan array untuk disetel untuk coba lagi setelahnya.

Laravel Factory


Model Laravel 8 ditingkatkan dari factory, sehingga Anda dapat dengan mudah membuat catatan dummy baru dari factory. mereka menambahkan new times() dengan cara itu Anda dapat menentukan opsi jumlah rekaman yang dibuat.

Sumber : https://teknocerdas.com/berita/ulasan-fitur-baru-di-laravel-8/

 


Tags Article :
#APLIKASI WEB #SOURCE CODE #TIPS DAN TRIK #PROGRAMMING #TREN TERBARU #WEB GRATIS #WEBSITE GRATIS #CODING #PHP #MYSQL #PROJECT GRATIS #INSERT #BOOTSTRAP #PROJECT #JS #SELECT #JQUERY #CSS #LARAVEL #UPDATE #CODEIGNITER #AJAX #TUTORIAL #HTML #DELETE #TEMPLATE #ARTIKEL #TEKNOLOGI #INFORMASI #PENGALAMAN


Share Articles :