Berikut penjelasan perbedaan Laravel 11 dan 12 serta panduan upgrade untuk pemula:
### Perbedaan Utama Laravel 11 vs Laravel 12
1. **PHP Version Requirement**
- Laravel 11: PHP 8.1+
- Laravel 12: PHP 8.2+ (wajib upgrade PHP dulu)
2. **Struktur Aplikasi Baru**
Laravel 12 menggunakan struktur project lebih minimalis:
```php
// Laravel 11
app/Http/Controllers/Controller.php
// Laravel 12
app/Controllers/Controller.php
```
3. **Pest 2 Integration**
Laravel 12 menggunakan versi terbaru framework testing Pest (versi 2) secara default.
4. **Maintenance Mode Upgrade**
```bash
# Laravel 11
php artisan down --secret=12345
# Laravel 12 (lebih sederhana)
php artisan down
```
5. **Mailer System**
Laravel 12 menggunakan Symfony Mailer menggantikan Swift Mailer yang sudah deprecated.
### Langkah Upgrade Laravel 11 → 12
**1. Backup Project**
- Commit semua perubahan ke Git
- Backup database
**2. Cek Environment**
Pastikan server menggunakan:
- PHP 8.2+
- Composer 2.6+
**3. Update `composer.json`**
```json
{
"require": {
"php": "^8.2",
"laravel/framework": "^12.0"
}
}
```
**4. Update Dependencies**
```bash
composer update --with-all-dependencies
```
**5. Penyesuaian Manual**
- **Mail Configuration** (jika pakai email):
Ganti `MAIL_MAILER=swift` → `MAIL_MAILER=symfony`
- **Testing** (jika pakai Pest):
```bash
composer require pestphp/pest --dev --with-all-dependencies
./vendor/bin/pest --upgrade
```
**6. Test Aplikasi**
```bash
php artisan serve
php artisan test
```
**7. Update Tambahan**
- Periksa file `config/*` dan sesuaikan dengan konfigurasi baru
- Update package pihak ketiga yang belum support Laravel 12
### Common Issues & Solusi
1. **Error PHP Version**
```bash
sudo apt install php8.2
sudo update-alternatives --set php /usr/bin/php8.2
```
2. **Deprecated Functions**
Contoh error: `Str::replaceArray()` → Ganti dengan `Str::replace()`
3. **Directory Structure Mismatch**
Sesuaikan namespace di controller:
```php
// Dari:
namespace App\Http\Controllers;
// Menjadi:
namespace App\Controllers;
```
4. **Mail Error**
Jika error pengiriman email:
```bash
composer require symfony/mailer
```
### Tips
1. Gunakan [Laravel Shift](https://laravelshift.com/) untuk upgrade otomatis (berbayar)
2. Pelajari dokumentasi resmi: [Laravel 12 Upgrade Guide](https://laravel.com/docs/12.x/upgrade)
3. Lakukan upgrade di environment development terlebih dahulu
Dengan mengikuti langkah ini, Anda bisa upgrade dengan lebih aman. Jika menemui error spesifik, cek pesan error dan sesuaikan dengan dokumentasi resmi.
Komentar
Posting Komentar