Series Terkait
Artikel ini adalah lanjutan dari Series Rebuild Laravel E-Learning:
- Part 1: Pengenalan & Mengapa Saya Upgrade
- Part 2: Setup Laravel 12 + Filament
- Part 3: Desain Skema Database
- Part 4: Autentikasi & Role User
- Part 5: Membangun Sistem Ujian
- Part 6: Fitur Real-Time
- Part 7: Strategi Testing
- Part 8: Deployment
š¬š§ Read in English
Kenapa Harus Upgrade ke Laravel 13?
Laravel 13 membawa beberapa peningkatan penting:
- Minimum PHP 8.3 ā Performa lebih cepat dan akses ke fitur modern PHP seperti typed class constants,
json_validate(), dan atribut#[Override]. - Core Lebih Ringan ā Penghapusan polyfill dan kode backward-compatibility yang redundan membuat framework lebih ringan dan cepat.
- Dukungan Symfony 7.4/8.0 ā Komponen Symfony yang diperbarui memberikan fondasi lebih stabil dan future-proof.
- Method Baru Cache::touch() ā Perpanjang TTL cache tanpa perlu membaca ulang nilainya, mengurangi pembacaan yang tidak perlu.
- Queue Lebih Konsisten ā Perilaku lebih terprediksi di berbagai driver queue (database, Redis, SQS).
- Utilitas Testing Lebih Baik ā Isolasi test yang ditingkatkan dengan auto-reset
Strfactories dan perbaikan lainnya. - Peningkatan Keamanan ā Pembaruan encryption primitives dan upgrade dependency.
Sebelum Memulai
Pastikan kamu sudah punya:
- PHP 8.3+ terinstall (ini yang paling penting ā Laravel 13 tidak lagi mendukung PHP 8.2)
- Backup database (selalu backup sebelum upgrade besar)
- Branch Git yang bersih untuk pekerjaan upgrade
git checkout -b upgrade/laravel-13
Langkah 1: Update PHP
Pertama, cek versi PHP kamu:
php -v
Kalau masih di PHP 8.2, upgrade ke 8.3 atau lebih baru. Di macOS dengan Homebrew:
brew install [email protected]
brew link [email protected]
Di Ubuntu:
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.3 php8.3-cli php8.3-mbstring php8.3-xml php8.3-curl php8.3-mysql php8.3-zip
Langkah 2: Update Dependency Composer
Inti dari upgrade ini adalah memperbarui composer.json. Berikut perubahan utama untuk project e-learning kita:
Framework & Package First-Party
{
"require": {
"php": "^8.3",
"laravel/breeze": "^2.3",
"laravel/framework": "^13.0",
"laravel/reverb": "^1.8",
"laravel/tinker": "^3.0",
"livewire/livewire": "^3.6.4",
"livewire/volt": "^1.7.0",
"maatwebsite/excel": "^3.1",
"spatie/laravel-permission": "^7.2"
}
}
Perubahan utama: php (^8.2 ā ^8.3), laravel/framework (^12.0 ā ^13.0), laravel/reverb (^1.7 ā ^1.8), dan laravel/tinker (^2.10.1 ā ^3.0). Dependency dev tetap sama ā sudah kompatibel dengan Laravel 13.
Dependency Dev
Tidak ada perubahan yang diperlukan. Semua package (phpunit, collision, pint, sail, pail) sudah kompatibel dengan Laravel 13.
{
"require-dev": {
"fakerphp/faker": "^1.23",
"laravel/pail": "^1.2.2",
"laravel/pint": "^1.24",
"laravel/sail": "^1.41",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpunit/phpunit": "^11.5.3"
}
}
Kemudian jalankan:
rm -rf vendor composer.lock
composer install
š” Tips: Kalau menemui konflik dependency, coba
composer update --with-all-dependenciesuntuk menyelesaikannya secara otomatis.
Langkah 3: Review Perubahan Konfigurasi
Laravel 13 mungkin memperbarui nilai konfigurasi default. Bandingkan file config kamu:
php artisan config:publish
File-file yang perlu diperhatikan:
config/app.phpā Cek nilai default baruconfig/cache.phpā Dukungan methodtouchbaruconfig/queue.phpā Perubahan konsistensi driver queue
Langkah 4: Tangani Breaking Changes
Penghapusan Polyfill
Laravel 13 menghapus kode backward-compatibility untuk versi PHP lama. Kalau kamu menggunakan helper yang sudah deprecated, perbarui sekarang.
PHPUnit
PHPUnit 11 tetap kompatibel dengan Laravel 13 ā tidak perlu upgrade paksa. Ketika PHPUnit 12 dirilis untuk package Laravel, perhatikan:
- Assertion deprecated yang mungkin dihapus
- Signature method
setUp()dantearDown()yang lebih ketat
Langkah 5: Update Dependency Frontend
Tidak ada perubahan dependency frontend yang diperlukan:
npm install
npm run build
laravel-vite-plugin (^2.0.0) dan Vite (^7.0.7) yang ada sudah kompatibel dengan Laravel 13.
Langkah 6: Test Semuanya
Jalankan seluruh test suite untuk menangkap masalah:
php artisan test
Untuk platform e-learning kita, perhatikan hal-hal berikut:
- Test komponen Livewire ā Pastikan semua komponen admin, guru, dan siswa render dengan benar
- Fitur real-time ā Test koneksi WebSocket dengan Laravel Reverb
- Import Excel ā Verifikasi import siswa masih berfungsi dengan Maatwebsite Excel
- Akses berbasis role ā Konfirmasi gates Spatie Permission masih berfungsi dengan benar
Langkah 7: Adopsi Fitur Baru
Setelah upgrade stabil, pertimbangkan untuk menggunakan fitur baru Laravel 13:
Cache::touch()
Cocok untuk caching sesi ujian kita ā perpanjang TTL tanpa membaca ulang:
// Di ujian CBT: jaga sesi tetap hidup tanpa re-fetch
Cache::touch("exam_session:{$studentId}:{$examId}", now()->addMinutes(30));
Fitur PHP 8.3
Manfaatkan PHP 8.3 di codebase kamu:
// Typed class constants
class ExamStatus
{
const string PENDING = 'pending';
const string ACTIVE = 'active';
const string COMPLETED = 'completed';
}
// json_validate() ā Tidak perlu lagi json_decode + cek error
if (json_validate($submissionData)) {
// Proses submission
}
Langkah 8: Deploy ke Production
Ikuti checklist deployment standar dengan perhatian ekstra pada versi PHP:
# Verifikasi versi PHP di production
php -v # Harus >= 8.3
# Pull dan install
git pull origin main
composer install --no-dev --optimize-autoloader
npm install && npm run build
# Migrasi dan optimasi
php artisan migrate --force
php artisan optimize
# Restart background services
sudo supervisorctl restart laravel-queue:*
sudo supervisorctl restart laravel-reverb
Ringkasan
Upgrade dari Laravel 12 ke Laravel 13 untuk project e-learning ini cukup straightforward. Prasyarat terbesar adalah memastikan PHP 8.3+ tersedia. Perubahan kode yang sebenarnya sangat minimal ā sebagian besar hanya bump versi dependency dan menangani assertion PHPUnit yang deprecated.
| Area | Tingkat Usaha |
|---|---|
| Upgrade PHP | š” Sedang (tergantung hosting) |
| Dependency Composer | š¢ Rendah (hanya 4 package berubah) |
| Perubahan kode | š¢ Rendah (breaking changes minimal) |
| Perbaikan test | š¢ Rendah (PHPUnit tidak berubah) |
| Deployment production | š¢ Rendah |
Upgrade ini seharusnya bisa diselesaikan dalam kurang dari satu hari untuk kebanyakan project. Selamat meng-upgrade! š
š Resources: