Tutorial Laravel 11 #1 : Perubahan dan Fitur Baru di Laravel 11


Tutorial Laravel 11 #1 : Perubahan dan Fitur Baru di Laravel 11

Halo teman-teman semuanya, pada artikel kali ini kita semua akan membahas apa saja fitur-fitur baru dan perubahan yang terjadi di Laravel 11.

Jika kita lihat pada kebijakan dukungan Laravel, maka Laravel 11 akan dirilis pada Q1 tahun 2024, yaitu tepatnya di bulan Maret 2024.

Version PHP (*) Release Bug Fixes Until Security Fixes Until
9 8.0 - 8.2 February 8th, 2022 August 8th, 2023 February 6th, 2024
10 8.1 - 8.3 February 14th, 2023 August 6th, 2024 February 4th, 2025
11 8.2 - 8.3 March 12th, 2024 September 3rd, 2025 March 12th, 2026
12 8.2 - 8.3 Q1 2025 Q3, 2026 Q1, 2027

Kemudian apa saja fitur-fitur dan perubahan yang terjadi di Laravel 11 ? mari kita akan membahasnya satu-persatu.

Pengenalan Laravel 11

Laravel 11 melanjutkan perbaikan yang dilakukan di Laravel 10.x dengan memperkenalkan struktur aplikasi yang disederhanakan, per-second rate limiting, health routing, graceful encryption key rotation, queue testing improvements, Resend mail transport, Prompt validator integration, new Artisan commands, dan masih banyak lagi.

Selain itu, Laravel juga merilis sebuah library yang bernama Laravel Reverb. Library ini merupakan server WebSocket yang memberikan kemampuan real-time yang baik pada aplikasi yang kita buat.

PHP 8.2

Untuk PHP dengan versi 8.1 kini sudah tidak akan bisa digunakan lagi di Laravel 11. Untuk teman-teman yang akan memulai membuat project baru di Laravel 11, maka harus menggunakan PHP versi 8.2 atau 8.3.

Berikut ini informasi terkait dukungan PHP 8.1 yang dihentikan di Laravel 11.

[11.x] Drop PHP 8.1 support

Kerangka Aplikasi yang lebih Sederhana

Laravel 11 akan hadir dengan struktur folder yang disederhanakan. Jadi sekarang saat teman-teman ketika membuat project baru di Laravel 11, maka di dalam folder app hanya terdapat 3 folder saja, yaitu Http, Models dan Providers, kurang lebih seperti ini.

app
├── Http
│   └── Controllers
│       └── Controller.php
├── Models
│   └── User.php
└── Providers
    └── AppServiceProvider.php

Struktur aplikasi baru ini dimaksudkan untuk memberikan pengalaman yang lebih ramping dan modern, dengan tetap mempertahankan banyak konsep yang sudah familiar bagi pengembang Laravel sebelumnya.

INFORMASI : jika sebelumnya teman-teman menggunakan Laravel versi 10 ke bawah dan ingin upgrade ke Laravel 11, maka kita tidak harus mengadopsi struktur project baru ini. Artinya, struktur project Laravel lama masih tetap bisa digunakan.

Tampilan Welcome Screen Baru

Di Laravel 11 untuk tampilkan welcome screen kini telah diubah, kurang lebih seperti berikut ini.

File Bootstrap Aplikasi

File bootstrap/app.php telah direvitalisasi sebagai kode pertama dari aplikasi. Dari file ini, kita sekarang dapat menyesuaikan route aplikasi, middleware, service providers, exception handling, dan banyak lagi. File ini menyatukan berbagai pengaturan aplikasi yang sebelumnya tersebar di seluruh struktur file aplikasi Laravel:

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        //
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })->create();

Perubahan Route

Sekarang di Laravel 11 untuk default Route-nya hanya akan terdapat 2 file saja, yaitu console.php dan web.php. Terus bagaimana jika kita ingin membuat route untuk Rest API ? cukup mudah kok, kita tinggal jalankan saja perintah berikut ini.

php artisan install:api

Dengan begitu, maka file api.php akan digenerate di dalam folder routes. Begitu juga dengan route broadcasting, teman-teman bisa menjalankan perintah berikut ini.

php artisan install:broadcasting

Perintah Artisan Baru

Perintah Artisan baru telah ditambahkan untuk memungkinkan pembuatan class, enum, interface, dan traits:

php artisan make:class
php artisan make:enum
php artisan make:interface
php artisan make:trait

Model Cast Improvements

Dulu jika kita ingin mendefiniskan cast tentu kita menggunakan sebuah properti, contohnya seperti ini.

protected $casts = [
    'email_verified_at' => 'datetime',
    'password' => 'hashed',
];

Sekarang di dalam Laravel 11, untuk mendefinisikan cast kita harus menggunakan method, jadi hasilnya seperti berikut ini.

protected function casts(): array
{
    return [
        'email_verified_at' => 'datetime',
        'password' => 'hashed',
    ];
}

Default Database

Secara default, aplikasi Laravel baru menggunakan database SQLite untuk penyimpanan database, serta driver database untuk session, cache, dan queue.

Laravel Reverb

Laravel Reverb menghadirkan komunikasi WebSocket real-time yang sangat cepat dan terukur langsung ke aplikasi Laravel kita, dan menyediakan integrasi dengan event broadcasting Laravel yang sudah ada, seperti Laravel Echo.

Untuk informasi lebih lanjut tentang Laravel Reverb : https://laravel.com/docs/11.x/reverb

Trait Dumpable

Saat itu, di Laravel 11 semua kelas telah ditambahkan method dd atau dump. Tujuannya untuk menyerdehanakan inti dari framework itu sendiri. Contohnya seperti berikut ini.

class Stringable implements JsonSerializable, ArrayAccess
{
    use Conditionable, Dumpable, Macroable, Tappable;
 
    str('foo')->dd();
    str('foo')->dump();

Migration yang lebih Sederhana

Sekarang di Laravel 11 untuk default migration yang disertakan akan disederhanakan, yaitu kita hanya akan menemukan 3 file migration saja.

database/migrations
├── 0001_01_01_000000_create_users_table.php
├── 0001_01_01_000001_create_cache_table.php
└── 0001_01_01_000002_create_jobs_table.php

0 directories, 3 files

Per-Second Rate Limiting

Pada versi sebelumnya, Laravel membatasi rate limiter itu adalah "per menit". Dan sekarang di Laravel mendukung rate limiting "per detik", termasuk untuk permintaan HTTP dan queued jobs.

RateLimiter::for('invoices', function (Request $request) {
    return Limit::perSecond(1);
});

Untuk informasi lebih lanjut tentang rate limiting di Laravel, lihat dokumentasinya.

Eager Loading Limit

Laravel 11 akan terintegrasi dengan package yang nanti akan memudahkan kita dalam membuat query di dalam eager loading. Berikut ini contohnya.

User::select('id', 'name')->with([
    'articles' => fn($query) => $query->limit(5)
])->get();

Untuk informasi lebih lanjut, lihat selengkapnya disini https://github.com/staudenmeir/eloquent-eager-limit

Kesimpulan

Mungkin untuk seseorang pemula akan sedikit kaget karena struktur yang ada di Laravel kali ini akan lebih minimalis dan berbeda dengan versi sebelum-sebelumnya. Tapi tidak perlu kawatir, karena pada dasarnya dari Laravel versi 5 sampai saat ini masih memiliki konsep yang sama.

Terima Kasih



Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami