Ilmu Coding Ilmucoding.com - Merupakan situs yang membantu Anda belajar coding lebih mudah, nyaman, interaktif dan profesional. Belajar sekarang di ilmu coding. GRATIS

Fitur Baru dan Ulasan Laravel 8 yang Perlu Kamu Tahu

5 min read

Fitur Baru dan Ulasan Laravel 8

Kehadiran Laravel 8 pastinya diikuti dengan fitur baru yang nggak kalah canggih dari versi sebelumnya.

Tujuan adanya update versi ke atas, pasti memiliki maksud untuk meningkatkan fitur, kinerja dan penutupan bug.

Tepatnya pada tanggal 8 September, Taylor Otwell mengumumkan melalui situs laravel.com kehadiran Laravel 8.

Saya melihat banyak fitur baru yang menarik dan dapat membantu meningkatkan kinerja kita dalam membangun aplikasi berbasis web.

Nah, di sini kita akan mengulas apa saja fitur baru Laravel 8 yang perlu kita ketahui.

Jadi, di sini saya akan menunjukkan satu per satu beberapa fitur hebat yang hadir di Laravel 8.

Taylor Otwell menambahkan lebih banyak peningkatan pada model, .env, rate limiting, route caching, factory, controller, namespace, dll.

Mari kita bahas satu per satu secara detail…

Siap?

Fitur Baru dan Ulasan Laravel 8

Ada 8 hal yang akan saya berikan ulasan di sini. Setiap fitur apa disertai dengan contoh.

Simak selengkapnya…

Cara Install Laravel 8

Dalam hal installasi, Laravel 8 menggunakan metode yang sama dengan versi sebelumnya, yaitu:

composer require laravel/laravel nama_project

Akan tetapi ini akan berpengaruh pada versi Laravel 8 ke bawah.

Otomatis, untuk mendapatkan versi 8 ke bawah perlu menambahkan versi di ujung nama project.

Silahkan baca dahulu:

Sudah baca?

Kita lanjut sekarang…

Penempatan Model

Taylor Otwell menulis tweet dan mengumumkan versi Laravel 8 berikutnya akan memiliki direktori baru “Model” untuk semua Model Eloquent.

Sebenarnya banyak web developer yang sudah lama menggunakan folder Models ini. Hanya saja baru diadakan kembali di versi Laravel 8.

Saya suka fitur ini karena akan lebih menghemat kode php artisan. Wkwkwk.

Jadi gini … Saat ini semua model disimpan default di folder aplikasi seperti app/User.php, app/Post.php dll.

Tetapi Laravel 8 menyediakan direktori baru bernama Models untuk menyimpan semua model yang kita buat.

Jadi… jika kita menjalankan perintah ini php artisan make:model Post maka itu akan disimpan seperti di bawah ini:

app/Models/Post.php

Padahal di versi sebelumnya default model ada di:

app/Post.php

Tuh kan udah enak banget sekarang.

Ga perlu lagi ketik php artisan make:model Models/Post lagi.

Peningkatan di php artisan serve

Fitur ini juga diumumkan melalui tweet Taylor Otwell dan saya akan mengulas apa manfaat fitur ini.

Biasanya, saat kita menjalankan aplikasi di local, sudah pasti melalui perintah di bawah ini:

php artisan serve

… dan ketika kita mengubah beberapa nilai variabel di file .env, maka kita harus menghentikan jalannya aplikasi dan memulai kembali perintah php artisan serve.

Tetapi di Laravel 8 menyediakan cara agar kita tidak perlu merestart lagi saat mengubah nilai variabel di .env

Laravel 8 akan otomatis mengupdate tanpa perlu kita restart lagi aplikasinya.

Mantap!

Menghapus Controller Namespace Prefix

Laravel 8 menghapus prefix variabel $namespace dalam file RouteServiceProvider.php dari versi laravel sebelumnya.

Jadi pada dasarnya ini akan secara otomatis menerapkan namespace App\Http\Controllers ke controller.

Kita dapat melihat RouteServiceProvider.php lama dan file RouteServiceProvider.php baru.

RouteServiceProvider.php lama:

<?php

namespace App\Providers;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;

class RouteServiceProvider extends ServiceProvider
{

    /**
        * This namespace is applied to your controller routes.
        *
        * In addition, it is set as the URL generator's root namespace.
        *
        * @var string
        */
    protected $namespace = 'App\Http\Controllers';
    
    /**
        * The path to the "home" route for your application.
        *
        * @var string
        */
    public const HOME = '/home';
    ....

RouteServiceProvider.php baru:

<?php
  
namespace App\Providers;
  
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
  
class RouteServiceProvider extends ServiceProvider
{
    /**
     * The path to the "home" route for your application.
     *
     * This is used by Laravel authentication to redirect users after login.
     *
     * @var string
     */
    public const HOME = '/home';
  
    /**
     * Define your route model bindings, pattern filters, etc.
     *
     * @return void
     */
    public function boot()
    {
        $this->configureRateLimiting();
  
        $this->routes(function () {
            Route::middleware('web')
                ->group(base_path('routes/web.php'));
  
            Route::prefix('api')
                ->middleware('api')
                ->group(base_path('routes/api.php'));
        });
    }
  
....

Meningkatkan Rate Limit

Fitur keren lainnya yang ada pada Laravel 8 adalah dapat menentukan batas waktu untuk route kita.

Jika kita sedang membangun proyek api atau beberapa proyek ERP maka kita harus menetapkan batas untuk mengaktifkan permintaan di api.

Jika tidak, server akan lebih cepat down jika seseorang melakukan begitu banyak permintaan.

… di laravel 8 telah menyediakan middleware rate limit.

dengan itu, kita dapat mengatur jumlah permintaan per waktu.

Ini contoh bagaimana kita dapat mengatur rate limit dengan Laravel 8.

Buka RouteServiceProvider.php dan tambahkan:

<?php
  
namespace App\Providers;
  
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
  
class RouteServiceProvider extends ServiceProvider
{
    /**
     * The path to the "home" route for your application.
     *
     * This is used by Laravel authentication to redirect users after login.
     *
     * @var string
     */
    public const HOME = '/home';
  
    /**
     * Define your route model bindings, pattern filters, etc.
     *
     * @return void
     */
    public function boot()
    {
        RateLimiter::for('uploadFile', function (Request $request) {
            Limit::perMinute(8)->by($request->ip()),
        });
  
        RateLimiter::for('downloadFile', function (Request $request) {
            if ($request->user()->isSubscribed()) {
                return Limit::none();
            }
            Limit::perMinute(8)->by($request->ip()),
        });
  
        $this->configureRateLimiting();
  
        $this->routes(function () {
            Route::middleware('web')
                ->group(base_path('routes/web.php'));
  
            Route::prefix('api')
                ->middleware('api')
                ->group(base_path('routes/api.php'));
        });
    }
  
    /**
     * Configure the rate limiters for the application.
     *
     * @return void
     */
    protected function configureRateLimiting()
    {
        RateLimiter::for('api', function (Request $request) {
            return Limit::perMinute(60);
        });
    }
}

Kemudian pada routes/api.php atau routes/web.php kita tambahkan:

Route::get('upload','FileController@index')->->middleware('throttle:uploadFile');
Route::get('download','FileController@index')->->middleware('throttle:downloadFile');
  
/* or use it no group */
Route::middleware(['throttle:uploadFile'])->group(function () {
       
}); 

Lanjut …

Peningkatan Route Caching

Kita 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, kita dapat menyimpan rute dan kemudian jika menambahkan route baru pada file route, maka akan terjadi masalah clossure.

Tetapi Laravel 8 menyelesaikan masalah itu, jika kita akan menambahkan route baru maka Laravel akan menambahkannya secara otomatis pada file cache.

Gak capek lagi kalau begini… Hehehe.

Update Design Pagination

Sekarang, Laravel 8 akan menggunakan library front-end default sebagai framework tailwind.

Jadi kelas pagination default sudah dihapus.

Tapi nggak perlu khawatir, jika kita ingin menggunakannya maka harus memanggil “useBootstrap()” di file AppServiceProvider.

Contohnya:

<?php
  
namespace App\Providers;
  
use Illuminate\Support\ServiceProvider;
use Illuminate\Pagination\Paginator;
  
class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
  
    }
  
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Paginator::useBootstrap();
    }
}

Update Syntax for Closure Based Event Listeners

Laravel 8 mengubah sintaks untuk memanggil event listener.

Mari kita lihat contoh program versi sebelumnya dan versi 8 ini.

Versi Laravel 8 ke bawah:

Event::listen(OrderShipped::class, function(OrderShipped $event) { 
    // Do something
});

Versi Laravel 8:

Event::listen(function(OrderShipped $event) { 
    /* Do something */
});

Sekarang terlihat tampak lebih singkat.

Queueable Model Event Listeners

Fitur baru lainnya yang saya suka yaitu ketika memanggil model create, update, delete dll maka Anda juga dapat melakukannya dengan mudah menggunakan queueable.

Kadang-kadang, kita 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.

Contoh:

class Product extends Model {
  
    protected static function booting() 
    {
        static::created(queueable(function(Product $product) {
           /* Write something Here  */
        }))
  
        static::updated(queueable(function(Product $product) {
           /* Write something Here */
        }))
    }
      
}

Laravel Factory

Laravel 8 telah meningkatkan dalam hal factory, sehingga kita dapat dengan mudah membuat dummy baru dari factory.

Fitur di Laravel 8 menambahkan function new times().

… dengan cara itu kita dapat menentukan opsi jumlah records yang dibuat.

Contohnya, kita dapat melihat peningkatan pada bagian ini:

Route::get('test-factory',function(){
   return User::factory()->create();
});

atau …

Route::get('test-factory',function(){
   return User::factory()->times(10)->create();
});

Maintenance Mode: Secreet Access

Jika kamu menginginkan agar website menjadi down atau up, maka cukup dengan command di bawah ini:

php artisan down
php artisan up

Laravel 8 pun memberikan cara agar kita dapat membuat kunci rahasia untuk memberikan akses kepada banyak orang.

Kita bisa menggunakan secret dan mengabaikan cookie, jadi sampai website kita pada posisi up, user bisa mengakses versi yang lama.

php artisan down --secret=new-pass

Sekarang, silahkanbuat route baru dan jika kita mengakses rute ini maka itu aplikasi web akan mengabaikan cookie dan mengakses situs web dengan mengikuti url:

https://www.example.com/new-pass

Maintenance Mode: Pre-Rendered Page

Laravel 8 telah menambahkan fitur baru, yaitu baskSoon atau kembali lagi nanti jika aplikasi sedang dalam keadaan down.

Kita dapat menggunakan perintah di bawah ini untuk merender hal tersebut.

php artisan down --render="errors::backSoon"

… atau kita juga bisa menggunakan command di bawah ini:

php artisan down --redirect=/ --status=200 --secret=myPassword --render="errors::503"

Mulai Belajar

Ada lebih banyak fitur Laravel 8 yang ditambahkan, tetapi tidak dijelaskan semua di sini.

… tetapi saya membahas apa yang saya suka dari pembaruan Laravel 8 di situs ini saja.

Oh iya, untuk panduan cara ugrade ke Laravel 8 bisa kamu simak di dokumentasinya langsung atau klik link di bawah ini:

Kunjungi: Upgrade ke Laravel 8

Pelajari Juga: List Belajar Laravel

Demikianlah ulasan mengenai Fitur Laravel 8 yang bisa saya jelaskan, semoga bermanfaat ya

Aamiin.

Ilmu Coding Ilmucoding.com - Merupakan situs yang membantu Anda belajar coding lebih mudah, nyaman, interaktif dan profesional. Belajar sekarang di ilmu coding. GRATIS

Leave a Reply

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

Jika terbantu dengan artikel ini, silahkan share, beri komentar dan "klik" 1 kali pada iklan ya.