Tutorial Codeigniter 4 #03: Struktur Folder dan Konsep MVC di Codeigniter 4

Saat pertama kali belajar CodeIgniter 4, banyak pemula merasa bingung dengan banyaknya folder dan istilah seperti MVC, routing, dan config. Padahal, jika kita memahami struktur folder CodeIgniter 4 dan konsep MVC CI4, semuanya akan terasa jauh lebih sederhana.
Pada artikel ini, kita akan membahas:
- Struktur folder utama CodeIgniter 4
- Konsep MVC dengan analogi restoran
- Alur kerja CodeIgniter dari URL hingga tampil di browser
- Mengenal folder konfigurasi
app/Config
Artikel ini cocok untuk pemula yang ingin memahami alur kerja CodeIgniter secara menyeluruh.
1. Struktur Folder CodeIgniter 4
Setelah kita menginstal CodeIgniter 4, kita akan melihat beberapa folder utama seperti:
app/
public/
system/
writable/Mari kita bedah satu per satu.
π 1. Folder app/ (Otak Aplikasi)
Folder app adalah tempat utama kita bekerja sebagai developer.
Di dalamnya terdapat:
Controllers/β tempat file controllerModels/β tempat file modelViews/β tempat file tampilanConfig/β konfigurasi aplikasiFilters/,Libraries/, dll.
Singkatnya:
Semua logika dan pengembangan aplikasi kita berada di folder ini.
Jika kita ingin membuat fitur baru, hampir semuanya akan kita kerjakan di dalam folder app.
π 2. Folder public/ (Gerbang Masuk Aplikasi)
Folder public adalah satu-satunya folder yang boleh diakses oleh browser.
Di dalamnya terdapat file penting:
index.phpFile inilah yang pertama kali dijalankan ketika seseorang mengakses website kita.
Biasanya di hosting (misalnya cPanel), folder public inilah yang diarahkan menjadi public_html.
βοΈ 3. Folder system/ (Mesin CodeIgniter)
Folder system berisi core atau mesin utama CodeIgniter 4.
Di dalamnya terdapat:
- Core Controller
- Core Model
- Routing engine
- Database engine
- dan berbagai library bawaan
β Penting:
Kita tidak boleh mengubah isi folder ini karena akan merusak sistem framework.
π 4. Folder writable/ (Tempat Penyimpanan Dinamis/Sementara)
Folder ini digunakan untuk:
- Cache
- Log error
- Session
- Upload file
Folder ini harus memiliki izin write (permission) karena aplikasi akan menulis data ke dalamnya.
Memahami Konsep MVC CI4 dengan Analogi Restoran
Agar lebih mudah dipahami, kita gunakan perumpamaan restoran.
Bayangkan kita datang ke restoran dan memesan makanan.
Dalam konsep MVC (Model View Controller):
- π¨βπ³ Model = Koki
- π§βπΌ Controller = Pelayan
- π View = Menu & Penyajian Makanan
Mari kita jelaskan satu per satu.
π¨βπ³ Model = Koki (Data & Logika Bisnis)
Model bertugas mengolah data.
Dalam dunia pemrograman:
- Mengambil data dari database
- Menyimpan data
- Mengupdate data
- Menghapus data
Contoh: Jika kita ingin mengambil data user dari database, maka Model yang akan mengerjakannya.
Model tidak menampilkan data ke browser. Ia hanya bekerja di belakang layar.
π§βπΌ Controller = Pelayan (Penghubung)
Controller adalah penghubung antara Model dan View.
Tugasnya:
- Menerima request dari user
- Memanggil Model
- Mengirim data ke View
Controller adalah βotak pengatur alurβ.
Jika dalam restoran: Pelayan menerima pesanan, menyampaikannya ke koki, lalu membawa makanan ke meja.
π View (Tampilan / Menu)
View adalah bagian yang dilihat oleh user di browser.
Berisi:
- HTML
- CSS
- Tampilan data
View tidak boleh berisi logika berat atau query database.
Tugasnya hanya menampilkan data yang sudah disiapkan Controller.
Alur Kerja CodeIgniter (Dari URL Sampai Tampil di Browser)
Sekarang kita pahami alur kerja CodeIgniter ketika seseorang mengakses URL.
Misalnya user membuka:
https://domainkita.com/produkMaka prosesnya adalah:
1οΈβ£ Request Masuk ke public/index.php
Semua request pertama kali masuk ke:
public/index.php
File ini adalah gerbang utama aplikasi.
2οΈβ£ Router Menganalisis URL
CodeIgniter memiliki sistem routing yang mengatur URL.
File routing ada di:
app/Config/Routes.php
Router akan menentukan:
URL /produk harus diarahkan ke Controller mana dan method apa.
Contoh:
$routes->get('/produk', 'Produk::index');Artinya:
- URL
/produk - Masuk ke Controller
Produk - Menjalankan method
index()
3οΈβ£ Controller Dipanggil
Controller menerima request.
Jika membutuhkan data, Controller akan memanggil Model.
4οΈβ£ Model Mengambil Data
Model akan:
- Mengakses database
- Mengambil data
- Mengembalikan hasil ke Controller

