Fitur Apa Saja Yang Baru di Laravel 11? Apa Kelebihan Laravel 11? Tutorial Fitur Terbaru Laravel 11 di Tahun 2024

Apa Yang Baru di Laravel 11

Sejak tahun 2011, Laravel telah menjadi Framework PHP yang sangat populer di seluruh dunia. Framework Laravel kini digunakan oleh lebih dari 1,300,000 juta situs web di seluruh dunia. Laravel akan menambahkan fitur-fitur baru untuk membuat pengembangan web menjadi lebih mudah diakses dan lebih baik dengan dirilisnya Laravel 11.
Artikel Laravel 11 ini akan mempelajari tentang fitur-fitur Laravel 11, perubahan Laravel 11, dan bagaimana Laravel 11 mengoptimalkan baris program yang akan Anda buat.
Laravel 11 tidak dijadwalkan untuk dirilis hingga kuartal pertama tahun 2024, tetapi beberapa fitur baru telah dibagikan, dan Taylor selaku Founder Laravel telah menjelaskan beberapa perbaikan besar dalam presentasinya di Laracon:

Kapan Laravel 11 Akan Dirilis

Merujuk pada berita terakhir di situs resmi Laravel dalam Support Privacy (Kebijakan Dukungan) disebutkan bahwa tanggal rilis versi terbaru Laravel 11 adalah belum ditentukan, akan tetapi banyak referensi menyebutkan tanggal resmi rilis Laravel 11 adalah pada 6 Februari 2024, karena kita tahu bahwa tim inti Laravel mengikuti metodologi Semantic Versioning yang menyatakan bahwa pembaruan utama pada kerangka kerja dirilis sekali setahun selama kuartal pertama. Namun, hal ini tidak berarti aplikasi yang sudah ada harus segera diperbarui ke versi Laravel terbaru.

Berapa Lama Siklus Dukungan Laravel 11

Aspek terpenting dari suatu Framework adalah kebijakan dukungan dan pembaruan terhadap hal-hal yang bersifat performa, bugs, keamanan dan kemudahan. Hal tersebut bisa Anda lihat bagaimana pemeliharaan sebuah Website atau Aplikasi yang dibangun dengan Laravel 11 akan di dukung penuh sehingga para pengembang aplikasi tidak perlu harus mengubah setiap saat untuk pembaruan. Perbaikan bug akan diberikan 5 Agustus 2025 setelah tanggal Laravel 11 telah dirilis, dan pembaruan keamanan akan diberikan 3 Februari 2026 setelahnya. Dengan rencana dukungan yang terorganisir dan terstruktur ini, Laravel 11 akan selalu menjadi pilihan utama yang aman dan terbaik bagi pengembang web yang bekerja pada proyek saat ini maupun di masa depan. Bisnis dan pengembang perlu mengetahui jadwal ini karena membantu dalam perencanaan jangka panjang dan menjaga aplikasi tetap terkini dan terbarukan.

Apa yang Baru di Laravel 11: Fitur dan Pembaruan Terkini

Tim Pengembang di Laravel memahami pentingnya fitur terbaru dan pembaruan yang diperkenalkan dalam sistem. Namun, mereka berusaha memberikan yang terbaik kepada para developer yang menggunakan Laravel 11 dan pemilik bisnis. Oleh karena itu, penggunaan versi terbaru dari framework atau komponennya selalu lebih disukai. Hal yang sama berlaku untuk Laravel 11 versi terbaru, yang memiliki banyak pembaruan yang dapat memberikan manfaat bagi bisnis Anda dalam beberapa aspek. Mari kita lanjutkan dengan apa yang dimiliki Laravel 11 dengan pembaruan terbaru tahun 2024 ini pada 6 Februari.

Persiapan Sebelum Instalasi Laravel 11 di Windows 10/11

Sebelum Anda melakukan instalasi Laravel 11 sebaiknya Anda memastikan minimal ada 3 hal: Cek Versi PHP, Cek Versi Composer dan terakhir adalah Cek Versi Laravel.
Apa yang Baru di Laravel 11: Fitur dan Pembaruan Terkini. Kapan Laravel 11 Rilis?
Saya langsung saja menggunakan versi paling terbaru yaitu PHP 8.3.2 yang rilis pada 16 Januari 2024 di situs resminya.

Bagaimana Cara Instalasi Laravel 11 di Windows 10/11

Dikarenakan Laravel 11 belum dirilis saat artikel ini Saya tulis, oleh karena itu, Anda harus menggunakan opsi --dev pada installer resmi Laravel, yang akan men-download dari branch utama dari repositori laravel/laravel yang selalu berisi kode baris program terbaru.
laravel new hello-world --dev
Atau, jika Anda lebih suka menggunakan Composer untuk Install Laravel 11 bisa menggunakan cara dibawah ini:
composer create-project --prefer-dist laravel/laravel hello-world dev-master

Keterangan Berhasil Instalasi Laravel 11 di Windows 10/11

Laravel 11 Sudah Tidak Support PHP 8.1

Ketika Laravel 11 dirilis, PHP 8.2 akan digunakan di Laravel 11, dan PHP 8.3 juga sudah mendukung Laravel 11. Dengan dukungan untuk dua versi terakhir tersebut di PHP, Laravel 11 memutuskan untuk meninggalkan PHP versi 8.1.

Struktur Direktori Yang Lebih Sederhana di Laravel 11

Sejauh ini, ini hanya mungkin beta ya. Akan tetapi juga besar kemungkinan dari sisi Mereka mungkin akan berubah, tetapi saat ini, hemat menurut Saya inilah yang diharapkan oleh para Laravel Developer, yaitu lebih disederhanakan lagi.

Laravel 11 Sudah Tidak Memiliki Folder Middleware

Laravel 11 Sudah Tidak Memiliki File Kernel.php

Kernel.php adalah bagian dari struktur dasar aplikasi Laravel dan berperan penting dalam mengelola middleware HTTP dan pengaturan lainnya. Sebagian besar hal yang dahulu bisa Anda lakukan di Kernel, sekarang dapat Anda lakukan di bootstrap/app. Jika Anda pada Laravel 10 sudah sangat terbiasa dengan penggunaan Kernel.php, maka pada Laravel 11 Anda dapat melakukan konfigurasi pendaftaran untuk Middleware langgung pada direktori bootstrap dengan file bernama app.php.
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;

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

Laravel 11 Merubah Model casts

Dalam Laravel, model casts adalah cara untuk mengubah tipe data atribut model dari satu jenis ke jenis lainnya secara otomatis. Dengan kata lain, Anda dapat menentukan bahwa suatu atribut tertentu pada model seharusnya dianggap sebagai tipe data tertentu, dan Laravel akan secara otomatis melakukan konversi untuk Anda.
Pada Laravel 10, Anda mendeklarasikan atribut casts dalam model Eloquent seperti ini pada file app/Models/User.php:
class User extends Model
{
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}
Pada Laravel 11, Anda mendeklarasikan atribut casts dalam model Eloquent akan berubah menjadi seperti ini pada file app/Models/User.php:
class User extends Model
{
    protected function casts(): array
    {
        return [
            'email_verified_at' => 'datetime',
        ];
    }
}

Laravel 11 dump() dan dd() Memiliki Pembaharuan Dari Sisi Debugging

Di Laravel, dump() dan dd() adalah dua fungsi bantu yang sering digunakan untuk melakukan debugging atau menampilkan informasi selama pengembangan aplikasi. Kedua fungsi ini digunakan untuk menampilkan nilai-nilai variabel, array, objek, atau ekspresi tertentu agar dapat dilihat dengan mudah pada halaman web atau konsol.
dump(): Fungsi dump() digunakan untuk menampilkan nilai-nilai data tanpa menghentikan eksekusi program. Fungsi ini berguna untuk melihat isi variabel atau ekspresi pada titik tertentu dalam kode tanpa mempengaruhi jalannya program secara keseluruhan.
dd() (Dump and Die): Fungsi dd() memiliki fungsi yang serupa dengan dump(), namun dengan tambahan bahwa setelah menampilkan data, eksekusi program akan dihentikan. Ini memungkinkan Anda untuk memeriksa nilai-nilai variabel atau ekspresi dan melihat keadaan program pada titik tertentu.
Berikut ini adalah contoh debugging pada Laravel 10:
$data = ['name' => 'Arya Febiyan', 'age' => 37];

dump($data); // Menampilkan data tanpa menghentikan eksekusi

dd($data); // Menampilkan data dan menghentikan eksekusi setelahnya
Berikut ini adalah contoh debugging pada Laravel 11:
namespace App\Http\Controllers;

use Illuminate\Support\Traits\Dumpable;
use Illuminate\Support\Traits\Conditionable;

class TestDumpableTraitController extends Controller
{
    public function index()
    {
        $obj = new Student;
        // sebelumnya
        // $obj->data()->bar();

        // debugging di Laravel 11
        $obj->row()->dd()->bar();
    }
}

class Student
{
    use Conditionable, Dumpable;

    public $data;

    public function row()
    {
        // return $this;
        $this->data = ['name' => 'Arya Febiyan', 'age' => 37];
        return $this;
    }
}

Laravel 11 Merubah Folder config Jadi Lebih Sederhana

Pada versi Laravel 10, Laravel memiliki banyak file konfigurasi pada folder /config/, dan pada Laravel 11, semuanya dihapus, dan semua opsi pilihan untuk konfigurasi dapat diatur pada file .env.
Apa yang Baru di Laravel 11: Fitur dan Pembaruan Terkini. Kapan Laravel 11 Rilis?
Apa yang Baru di Laravel 11: Fitur dan Pembaruan Terkini. Kapan Laravel 11 Rilis?
Sebagai gantinya, ada perintah config:publish yang baru sehingga Anda dapat mengembalikan konfigurasi apa pun yang mungkin Anda inginkan. Meskipun membawa kembali konfigurasi, fitur sirkulasi baru memungkinkan Anda menghapus setiap opsi yang tidak ingin Anda sesuaikan.
Agar Anda dapat memahaminya dengan baik, maka Saya buatkan sebuah video untuk menjelaskannya:

Laravel 11 Menyederhanakan Migrations Pada Database

Pada versi Laravel 10, Laravel memiliki banyak file migrations pada folder /database/migrations/ totalnya ada 4, dan pada Laravel 11, hanya tersisa 3 buah file migrations saja yaitu: 0001_01_01_000000_create_users_table.php, 0001_01_01_000001_create_cache_table.php dan 0001_01_01_000002_create_jobs_table.php

Laravel 11 Merubah Routes

Secara default di Laravel 10 pada folder /routes/ ada total 4 buah file yaitu: api.php, channels.php, console.php dan terakhir adalah web.php, akan tetapi hanya ada dua file routes saja di Laravel 11, yaitu console.php dan web.php. Route untuk API sekarang akan menjadi pilihan melalui perintah php artisan install:api, hal ini akan memberikan Anda file Route API dan Laravel Sanctum.
Jujur terus terang ya, ini sih opini pendapat pribadi Saya, dengan dibuat seperti ini, maka akan sangat sederhana sekali, karena tidak selalu Laravel di peruntukkan untuk Backend Developer yang berkutat dengan RESTful API, Auth, Security dan lain sebagainya. Bisa saja pemula menggunakan Laravel hanya ingin tahu, hanya ingin mencoba, hanya ingin melampiaskan rasa penarasan untuk komparasi beberapa framework di PHP itu seperti apa.
Saya akan mencoba membuat bagian ini menjadi lebih mudah difahami dan dicerna, simak pelan-pelan video yang Saya buat berikut:

Laravel 11 Merubah Controllers Menjadi Sangat Sederhana

Jika Anda perhatikan Controllers pada Laravel 10 dan melakukan komparasi dengan Controllers yang berada di Laravel 11 maka Kita akan mendapatkan gambaran sebagai berikut:
Sekarang Anda dapat memberikan kesimpulan bahwa selain baris program yang sederhana, Laravel 11 tidak menurunkan class Controller dari class BaseController, melainkan Laravel 11 membuat Controller menjadi class abstract.
Abstract class adalah salah satu fitur dalam pemrograman berorientasi objek (OOP) yang memungkinkan Anda mendefinisikan kelas yang tidak dapat diinstansiasi secara langsung. Diinstansiasi (instantiation) adalah proses pembuatan objek dari suatu kelas. Ketika Anda membuat objek dari suatu kelas, Anda menginstansiasi kelas tersebut. Sebaliknya, abstract class digunakan sebagai kerangka kerja untuk kelas-kelas turunannya.
$newObject = new YourClassName();
Anda sedang menginstansiasi kelas YourClassName. Kata kunci new digunakan untuk membuat objek baru berdasarkan suatu kelas, dalam hal ini, objek dari kelas YourClassName.
Untuk pembahasan Abstrak Kelas Saya akan pisahkan dari artikel ini. Ditunggu saja ya.

Laravel 11 Integrasi Dengan Eager Load Limit Package

Jika Anda perhatikan pada link berikut ini https://github.com/staudenmeir/eloquent-eager-limit maka tertera sebuah catatan bahwa package ini telah di merge kedalam Laravel 11. Eloquent Eager Limit dibuat oleh seorang pengembang inti Laravel yang tinggal di negara Jerman, berikut ini adalah nama lengkap Dia Jonas Staudenmeir dan akun Twitter X Jonas Staudenmeir bisa dikunjungi pada link berikut ini https://twitter.com/staudenmeir
Eager Loading adalah teknik di Laravel yang memungkinkan Anda memuat semua relasi yang terkait dengan model secara bersamaan untuk mengoptimalkan query database. Ini membantu menghindari masalah "N + 1" query, di mana tanpa eager loading, Anda mungkin harus melakukan satu query untuk mendapatkan data utama dan kemudian query tambahan untuk setiap relasi. Eager loading dapat dilakukan menggunakan metode with di Eloquent.
Inti dari package ini adalah mengoptimalkan query database. Contoh penggunaan Eager Loading dalam Laravel:
// Contoh 1: Memuat relasi 'comments' bersamaan dengan model 'posts'
$posts = Post::with('comments')->get();

// Contoh 2: Memuat beberapa relasi sekaligus
$users = User::with('posts', 'comments')->get();
Post::with('comments'): Ini menggunakan metode with untuk melakukan eager loading relasi 'comments' bersamaan dengan pengambilan data dari model Post.
User::with('posts', 'comments'): Ini menggunakan metode with untuk melakukan eager loading beberapa relasi sekaligus, yaitu 'posts' dan 'comments', bersamaan dengan pengambilan data dari model User.
Dengan menggunakan eager loading, Laravel dapat mengoptimalkan query database dengan memuat semua relasi terkait bersamaan dengan model utama, menghindari masalah "N + 1" query yang mungkin terjadi jika relasi dimuat secara terpisah.
Istilah "N + 1" dalam konteks query database mengacu pada situasi di mana Anda melakukan satu query untuk mendapatkan entitas utama dan kemudian N query tambahan untuk mendapatkan relasinya. Ini dapat menyebabkan overhead dan penggunaan sumber daya yang tidak efisien.

Contoh sederhana untuk menjelaskan "N + 1" adalah sebagai berikut:

Anda memiliki model Post yang memiliki relasi dengan model Comment. Anda ingin mendapatkan semua posting bersama dengan komentar-komentarnya.
Jika Anda menggunakan metode "N + 1", Anda mungkin melakukannya seperti ini:
// Mendapatkan semua posting
$posts = Post::all();

// Iterasi melalui setiap posting dan mendapatkan komentar-komentarnya
foreach ($posts as $post) {
    // query tambahan untuk setiap posting
    $comments = $post->comments;
    // ...
}
Dalam contoh diatas, untuk setiap posting, Anda melakukan query tambahan untuk mendapatkan komentar-komentarnya (INI SALAH DAN TIDAK TEPAT TIDAK BENAR!). Sebagai hasilnya, jumlah query yang dilakukan akan menjadi N + 1, dengan N adalah jumlah posting.
Untuk mengatasi masalah diatas, Anda dapat menggunakan eager loading, yang memuat semua relasi tabel yang Anda ingin tampilkan kolom nilainya, yang diperlukan bersamaan dengan pengambilan data model maka semua itu di gabung dalam satu proses.
Sehingga baris program diatas dalam di sederhanakan menjadi berikut:
// Memuat beberapa relasi sekaligus
$users = User::with('posts', 'comments')->get();
Baris program diatas dapat membantu mengurangi jumlah query yang dibuat dan mampu meningkatkan kinerja yang optimal. Dalam Laravel, metode with digunakan untuk menerapkan eager loading. Contoh dari pertanyaan sebelumnya mengenai eager loading juga merupakan upaya untuk menghindari masalah "N + 1".

Kesimpulan Laravel 11

Sejauh ini, semua fitur ini dianggap sebagai versi beta untuk Laravel 11 dan dirancang untuk meningkatkan alur kerja Anda. Hal-hal yang mungkin bias berubah dan akan berubah, dan Saya akan tetap memperbarui artikel ini ketika fitur-fitur baru diumumkan disitus resmi Laravel.
Ya menurut Saya sih jadi lebih sederhana saja, ibarat lemak ditubuh dibuang sehingga menjadi lebih ramping dan kurus yang tujuan akhirnya adalah kinerja dan performa Laravel 11 dapat diandalkan dalam pembuatan aplikasi berbasis web.
22 Januari 2024

Webinar Gratis 2024


Selanjutnya Pada Bulan Maret 2024

Sabtu, 09 Maret 2024


10 Bahasa Rekomendasi Untuk Dipelajari di 2024

Python Developer, Data Science, Web Application

Kursus Python Django Web Application 2024 di DUMET School Mini Bootcamp Backend Laravel 11 Bulan Mei 2024 di DUMET School
Webinar Selanjutnya Mei 2024

Minggu, 26 Mei 2024, 09.00-13.00 WIB

(4 Jam Membuat Backend di Laravel 11)

chat