Eko Kurniawan Khannedy ● Technical architect at one of the biggest ecommerce company in Indonesia ● 13+ years experiences ● www.programmerzamannow.com ● youtube.com/c/ProgrammerZamanNow Eko Kurniawan Khannedy ● Telegram : @khannedy ● Linkedin : https://www.linkedin.com/company/programmer-zaman-now/ ● Facebook : fb.com/ProgrammerZamanNow ● Instagram : instagram.com/programmerzamannow ● Youtube : youtube.com/c/ProgrammerZamanNow ● Telegram Channel : t.me/ProgrammerZamanNow ● Tiktok : https://tiktok.com/@programmerzamannow ● Email : echo.khannedy@gmail.com Sebelum Belajar ● Kelas PHP dari Programmer Zaman Now ● Kelas MySQL dari Programmer Zaman Now ● Kelas Laravel dari Programmer Zaman Now Membuat Project Membuat Project ● composer create-project laravel/laravel=version belajar-laravel-11 ● https://packagist.org/packages/laravel/laravel Struktur Folder Lebih Sederhana Struktur Folder Lebih Sederhana ● Struktur folder di Laravel 11 lebih sederhana dibanding Laravel 10 ● Namun bukan berarti fitur Laravel 10 dihapus ● Beberapa file seperti Kernel, Middleware, dan lain-lain sekarang berada di dalam framework Laravel ● Sehingga aplikasi kita lebih bersih dari kode yang mungkin jarang kita gunakan Config File Lebih Sederhana Config File Lebih Sederhana ● Di Laravel 11, file Config lebih sedikit ● Beberapa Config file dihapus, terutama yang jarang digunakan ● Namun bukan berarti hilang, tapi tetap ada di Framework Laravel nya Publish Config ● Jika kita butuh config file yang dihapus di Laravel 11, kita bisa gunakan perintah : php artisan config:publish ● Untuk menampilkan kembali config file tersebut Service Provider Lebih Sederhana Service Provider ● Di Laravel 10, banyak sekali Service Provider yang pertama kali dibuat di Project ● Di Laravel 11, semua Service Provider tersebut disimpan di dalam framework Laravel, sehingga di Project hanya tersedia AppServiceProvider ● Di Laravel 10, untuk membuat Service Provider, kita perlu registrasikan di config/app.php ● Di Laravel 11, untuk meregistrasikan Service Provider, kita cukup gunakan file bootstrap/providers.php Membuat Service Provider ● php artisan make:provider FooBarServiceProvider ● Secara otomatis akan ditambahkan ke file bootstrap/providers.php Routing Lebih Sederhana Routing Lebih Sederhana ● Di Laravel 10, konfigurasi Routing dilakukan di RouteServiceProvider ● Di Laravel 11, konfigurasi Routing lebih sederhana, dilakukan menggunakan ApplicationBuilder di file bootstrap/app.php ● Secara default Routing hanya disediakan untuk Web dan Command, tidak disediakan untuk API API Route Optional API Route Optional ● Di Laravel 10, secara default terdapat API Routing, di Laravel 11, hal itu menjadi Optional ● Jika kita ingin menambahkan API Routing, kita bisa gunakan perintah : php artisan install:api ● Maka akan ditambahkan Routing untuk API di bootstrap/app.php ● Dan juga akan ditambahkan file Routing di routes/api.php Middleware Lebih Sederhana Middleware Lebih Sederhana ● Sebelumnya, ada banyak sekali Middleware yang dibuat ketika membuat project di Laravel 10 ● Di Laravel 11, semua Middleware tersebut akan disimpan di Framework Laravel ● Dan jika ingin mengelola Middleware, kita bisa gunakan class Middleware di file bootstrap/app.php Membuat Middleware ● php artisan make:middleware LogMiddleware Kode : Log Middleware Kode : Menambahkan Middleware Health Check Health Check ● Laravel 11 memiliki fitur Health Check ● Fitur ini digunakan untuk memastikan apakah aplikasi kita sehat atau tidak ● Secara default, kita bisa mengakses URL /up pada aplikasi Laravel 11, atau bisa kita ubah pada file bootstrap/app.php Menambah Health Check ● Saat endpoint Health Check diakses, Laravel akan mengirim event DiagnosingHealth ● Kita bisa membuat Event Listener untuk DiagnosingHealth, lalu melakukan sesuatu, misal mengecek Redis, mengecek Database, dan lain-lain ● Jika error, kita bisa throw error pada Event Listener, dan secara otomatis Health Check akan gagal sehingga aplikasi dianggap tidak sehat Membuat Event Listener ● Untuk membuat Event Listener, kita bisa menggunakna perintah : php artisan make:listener RedisCheckEventListener Kode : Redis Check Event Listener Perintah Artisan Baru Perintah Artisan Baru ● Laravel 11 menyediakan perintah artisan baru untuk membuat beberapa hal di PHP, dan ini sangat membantu ketika membuat aplikasi ● php artisan make:enum : Untuk membuat PHP Enum ● php artisan make:class : Untuk membuat PHP Class ● php artisan make:interface : Untuk membuat PHP Interface ● php artisan make:trait : Untuk membuat PHP Trait Integrasi dengan Pest Unit Test Pest Unit Test ● Saat ini, ada Test Framework yang sedang populer di PHP bernama Pest ● Ini adalah alternatif lain dari PHPUnit untuk melakukan Unit Test ● https://pestphp.com/ Menginstall Pest ● Untuk menginstall Pest sebagai Test Framework di Laravel, kita bisa hapus dulu file PHPUnit di phpunit.xml dan file unit test yang menggunakan PHP Unit ● Selanjutnya kita bisa install Pest menggunakan perintah : composer require pestphp/pest --dev --with-all-dependencies ● Setelah itu, kita bisa setup seluruh file yang dibutuhkan oleh Laravel menggunakan perintah : ./vendor/bin/pest --init ● Untuk menjalankan Unit Test, kita bisa gunakan perintah : ./vendor/bin/pest Membuat Unit Test ● Jika kita sudah mengganti PHPUnit menjadi Pest ● Saat kita buat Unit Test baru menggunakan perintah : php artisan make:test ● Maka Laravel akan menggunakan Pest secara otomatis Default Database Sqlite Default Database Sqlite ● Saat pertama project Laravel 11 dibuat, secara default Laravel akan menggunakan database Sqlite ● Jika kita ingin menggantinya menjadi database MySQL misalnya, kita bisa ganti pada file .env Kode : Mengubah Database Exception Handler Lebih Sederhana Exception Handler Lebih Sederhana ● Di Laravel 10, Exception Handler disimpan di Exceptions/Handler.php ● Di Laravel 11, semua digabung di bootstrap/app.php ● Dan cara menambahkan Exception Handler lebih mudah Membuat Exception dan Controller ● php artisan make:exception ValidationError Kode : Konfigurasi Exception Handler Once Helper Method Once Helper Method ● Laravel 11 menambah sebuah global method bernama once(callbak) ● once() method ini digunakan untuk mengingat hasil sebelumnya, sehingga ketika kita panggil lagi hasilnya, maka akan mengembalikan nilai sebelumnya, tanpa mengulang mengeksekusi callback function nya ● Ini cocok untuk membungkus kode yang sangat berat sehingga tidak perlu dipanggil berkali-kali jika memang hasilnya akan selalu sama Kode : Math Helper Class Kode : Test Math Helper Model Casts Model Casts ● Attribute Casting adalah fitur di Eloquent untuk melakukan konversi tipe data secara otomatis dari tipe data di database, dengan tipe data yang ada di PHP ● Di Laravel 10, defaultnya akan menggunakan attribute $casts di Model ● Namun di Laravel 11, diubah menjadi Function casts Kode : User Model Upgrade dari Laravel 10 Upgrade Laravel 10 ke Laravel 11 ● Mari kita coba upgrade RESTful API project sebelumnya dari Laravel 10 ke Laravel 11 ● https://github.com/programmerzamannow/belajar-laravel-restful-api ● https://laravel.com/docs/11.x/upgrade Penutup