Berikut adalah tabel perbedaan utama antara CodeIgniter 3 dan CodeIgniter 4 yang perlu kamu ketahui saat melakukan migrasi:
Aspek | CodeIgniter 3 | CodeIgniter 4 |
---|---|---|
Versi PHP Minimum | PHP 5.6.0 | PHP 7.2 (awal), sekarang disarankan PHP 8.0 atau lebih |
Struktur Folder | Lebih sederhana dan flat | Lebih modular dan terorganisir (ada folder app , system , writable , dll) |
Autoloading | Manual via config/autoload.php | Menggunakan PSR-4 autoloading (Composer kompatibel) |
Routing | Route berbasis URI segment | Lebih fleksibel, mendukung route berbasis closure & filter |
Namespace | Tidak ada | Menggunakan namespace PHP (PSR standar) |
Model | Tidak wajib OOP murni, bisa procedural | Lebih OOP dan mendukung Entity & Model berbasis ORM ringan |
Helper | Dipanggil manual via load->helper() | Bisa dipanggil langsung dengan helper() global function |
Session | Berdasarkan PHP native | Bisa menggunakan berbagai driver (file, database, redis) |
Library & Class | Disimpan di application/libraries | Bisa di-namespace dan autoloaded via PSR-4 |
Validation | Validation terpisah dari model | Validation terintegrasi dengan model |
Environment Configuration | Manual konfigurasi | Mendukung file .env untuk manajemen konfigurasi |
Testing (Unit Test) | Tidak terintegrasi | Mendukung PHPUnit secara default |
Security | CSRF dan XSS filter manual | Lebih kuat, ada filter dan middleware bawaan |
CLI Tools | Tidak ada | Ada perintah spark CLI untuk generate, migrate, dll |
Database Migration | Harus dibuat manual | Mendukung migration & seeding database via CLI |
Middleware/Filter | Harus didefinisikan sendiri | Mendukung filter untuk auth, logging, dll |
Template Engine | Tidak disediakan default | Tetap pakai view() , tetapi bisa integrasi Blade/Twig |
Composer Support | Terbatas (tidak native) | Full support, autoloading via Composer |
File Upload & Handling | Kurang aman, butuh konfigurasi manual | Ada class khusus untuk upload & file handling |
Jika kamu melakukan migrasi, kamu tidak bisa langsung copy-paste file CI3 ke CI4 karena perbedaannya cukup fundamental, terutama pada struktur folder, namespace, dan cara kerja autoloading.