Laravel 12 sudah diluncurkan, ketahuilah fitur yang ada dan bagaimana cara upgradenya


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