Perubahan dan Fitur Baru di Laravel 11

Perubahan dan Fitur Baru di Laravel 11

laravelphp
Akhmad Salafudin on 01 Apr 2024

Laravel 11

Laravel 11 sudah release, dengan beberapa perubahan termasuk minimum PHP v8.2, struktur direktori baru, dan beberapa fitur yang sangat menarik. Mari kita bahas satu persatu.

Artikel ini diperuntukkan untuk anda yang sudah familiar dengan framework Laravel. Jika belum, anda bisa baca apa itu Laravel di website resminya https://laravel.com/

Minimum versi PHP

Laravel 11 membutuhkan minimum PHP v8.2. Jika anda masih menggunakan versi dibawahnya, mungkin ini saat terbaik untuk upgrade dan mulai explore fitur-fitur baru di Laravel 11.

Instalasi Laravel 11

Sebelum menginstal Laravel 11, silahkan pastikan anda telah menginstal PHP 8.2 dan composer. Setelah itu anda dapat menjalankan instalasi Laravel 11 dengan composer create-project command.

composer create-project laravel/laravel:^11.0 nama-aplikasi

Atau, alternatif lain anda bisa menggunakan laravel installer yang diinstall secara global

composer global require laravel/installer

laravel new nama-aplikasi

Setelah proses instalasi selesai, silahkan masuk ke direktori nama-aplikasi yang baru saja dibuat dan jalankan Laravel artisan command.

cd nama-aplikasi
php artisan serve

SQLite 3.35.0+

Secara default Laravel 11 menggunakan driver sqlite. Hal ini membuat project setup lebih simpel karena tidak membutuhkan instalasi software tambahan. Namun perlu diperhatikan bahwa Laravel 11 membutuhkan versi SQLite 3.35.0 atau lebih.

Struktur Aplikasi Minimalis

Jika kita perhatikan, struktur direktori Laravel 11 berbeda dengan versi Laravel sebelumnya. Untuk versi ini, struktur direktori lebih minimalis dan simpel. Laravel 11 memangkas kurang lebih 69 file dari versi sebelumnya. Mantap kan. Berikut beberapa rangkuman perubahan struktur direktori Laravel 11

  • Beberapa file seperti app/Http/Kernel.php dan app/Console/Kernel.php sudah tidak ada di versi yang terbaru ini.
  • Semua proses bootstrapping aplikasi terpusat di satu file bootstrap/app.php.
  • Controller sudah tidak extend dari file lain
  • Tidak ada direktori middleware
  • Sudah tidak ada file Exception/Handler.php

Terus bagaimana kita meregistrasikan provider, middleware, route, exception handler? Semua sekarang terpusat di bootstrap/app.php. Berikut contoh tampilan code di file tersebut

<?php

use IlluminateFoundationApplication;
use IlluminateFoundationConfigurationExceptions;
use IlluminateFoundationConfigurationMiddleware;

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

Untuk yang penasaran dan ingin tahu lebih detail mengenai struktur baru Laravel 11 ini, anda bisa lihat detailnya di sini.

Model casts

Model casts sekarang didefinisikan sebagai method, bukan property. Hal ini membuat kita lebih leluasa menambahkan casting di Model secara dinamis, karena kita dapat memanggil fungsi, mengimplementasikan custom class, dan lain-lain.

// Model casting versi lama
protected $casts = [
    'email_verified_at' => 'datetime',
    'password' => 'hashed',
];


// Model casting versi Laravel 11
protected function casts(): array
{
    return [
        'email_verified_at' => 'datetime',
        'password' => 'hashed',
        'options'=AsEnumCollection::of(UserOption::class),
    ];
}

Dumpable Trait

Sekarang kita dapat menggunakan trait Dumpable di kelas yang kita buat:

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

Direktori Config

Beberapa file config di Laravel 11 sudah otomatis diload dari internal framework. Jadi tersisa beberapa file config:

config
├── app.php
├── auth.php
├── cache.php
├── database.php
├── filesystems.php
├── logging.php
├── mail.php
├── queue.php
├── services.php
└── session.php

Jika kita ingin mempublish config lain, tinggal jalankan artisan command

php artisan config:publish

Nanti akan ada pertanyaan config mana yang akan dipublish.

Tambahan Artisan Make

Beberapa artisan command baru telah ditambahkan sehingga mempermudah kita untuk membuat class, enum, interface dan trait:

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

Kesimpulan

Di artikel ini saya hanya menjelaskan beberapa perubahan dan fitur-fitur baru yang ada di Laravel 11. Masih banyak fitur lain yang bisa anda explore sendiri di Laravel versi terbaru ini. Fitur-fitur dan perubahan tersebut kita harapkan dapat mengoptimalkan kita saat membuat project dengan framework Laravel. Mungkin beberapa fitur juga akan mengalami perubahan, jadi pastikan tetap update dari halaman resminya https://laravel.com.

Diskusi (0)

Silakan Login untuk berdiskusi