Struktur Folder CodeIgniter 4
** docs ini masih dalam pengembangan, materi akan ditambah dan diperbaiki.
CodeIgniter 4 sebagai framework PHP memiliki aturan dan struktur folder tersendiri untuk menjalankan tugasnya. Folder dan file dalam starter project (berkas zip yang didownload pertama kali saat memulai proyek ini) sudah disediakan oleh framework CodeIgniter untuk menjalankan fungsi yang membantu mempercepat pembuatan proyek. Bila tidak menggunakan framework, kita harus membuat fungsi-fungsi tersebut dari awal agar bisa membuat website dengan performa yang bagus. Struktur folder ini sudah baku dan kita hanya akan mengubah konfigurasi dan membuat file baru untuk menjalankan alur proses sesuai kebutuhan website. Disini kita akan belajar apa saja fungsi-fungsi folder tersebut.
Untuk mempelajari lebih lanjut Migrasi di CodeIgniter 4 bisa baca di dokumentasi resmi.
Struktur folder utama
- app
- folder utama tempat alur proses aplikasi, di folder inilah kita nanti banyak menuliskan kode.
- public
- folder yang diakses pengguna website secara langsung lewat internet, hal ini karena disinilah letak file index.php, yang mana merupakan file pertama kali dijalankan bila mengunjungi sebuah website. Pemisahan folder public dengan folder lain adalah untuk mengamankan source code website. Di folder ini juga kita meletakkan file-file statis dari website kita, seperti file css, js, images, dsb.
- system
- folder dasar dari framework CodeIgniter, yang mengatur agar CodeIgniter dapat berjalan semestinya, kita tidak perlu menyentuh folder ini.
- tests
- folder tempat menyimpan file testing otomatis. Daripada developer mencoba fitur-fitur / fungsi dalam aplikasi apakah sudah berjalan baik atau belum secara manual, kita dapat membuat alur testing agar dijalankan secara otomatis oleh komputer. Testing yang baik akan sangat berguna untuk memastikan kode yang dijalankan terhindar dari bug.
- writable
- folder untuk menyimpan file-file yang akan dibuat selama website berjalan seperti cache, logs, uploads file, dsb.
- .env
- singkatan dari environtment, merupakan file untuk menyimpan nilai konfigurasi sistem sesuai dengan lingkungan dijalankan, misal lingkungan development memiliki konfigurasi yang berbeda dengan lingkungan produksi.
- composer.json
- file konfigurasi package yang digunakan jika menggunakan package manager Composer. Package manager merupakan pengelola package luar (dikembangkan oleh developer lain) yang dapat membantu proses pengembangan software.
- spark
- file untuk menjalankan PHP yang dapat membantu pengembangan website dengan CodeIgniter. Contohnya command ''' php spark serve''' yang dijalankan untuk membuat virtual host dari website kita sekaligus mendeploy-nya komputer local.
Struktur folder app
- Config
- folder tempat mengatur konfigurasi CodeIgniter, seperti url, autoload, database, filters, routes, dsb. Untuk konfigurasi yang tergantung dengan environtment (development atau production), lebih baik ubah pada file .env di folder utama.
- Controllers
- folder dari logika/alur proses website yang akan dikembangkan (Controller dari konsep MVC).
- Database
- folder untuk migrasi database dan seeding database, berkaitan dengan pembuatan dan modifikasi database.
- Filters
- folder untuk menyimpan berkas Filter, berkaitan dengan fungsi yang berjalan sebelum/sesudah suatu controller dijalankan.
- Helpers
- folder untuk menyimpan fungsi-fungsi tunggal (dapat berdiri sendiri) yang sering diakses untuk membantu pengembangan webite.
- Languages
- folder tempat translasi multibahasa.
- Libraries
- folder untuk menyimpan Class/File lain yang tidak termasuk salah-satu folder di atas (atau di bawah ini).
- Models
- folder dari entiti bisnis yang disimpan dalam database (Model dari konsep MVC).
- ThirdParty
- folder untuk menyimpan library pihak ketiga yang dapat membantu pengembangan website. Daripada membuat sendiri dari awal sebuah fungsi/fitur tertentu, kita dapat menggunakan library yang dibuat oleh developer lain.
- Views
- folder untuk menyimpan file yang berhubungan dengan tampilan yang akan terlihat di browser client (UI/antar muka), berupa file-file html dan/atau javascript (View dari konsep MVC).