Struktur folder project PHP MVC (Model-View-Controller) memisahkan logika bisnis, antarmuka pengguna, dan interaksi basis data ke dalam direktori terisolasi agar kode lebih mudah diuji, dirawat, dan dikembangkan secara tim. Standar arsitektur modern umumnya menempatkan satu titik masuk (public/index.php) untuk mengontrol semua permintaan HTTP (Single Entry Point).
Standar Susunan Direktori Project PHP MVC
Berikut adalah peta direktori standar yang digunakan pada sebagian besar kerangka kerja (framework) PHP berbasis MVC murni maupun kustom:
| Direktori / File | Fungsi Utama & Penjelasan Komponen |
|---|---|
app/ |
Pusat logika aplikasi inti yang mencakup Controllers, Models, dan Views. |
app/Controllers/ |
Menangani masukan pengguna (HTTP Request), memanggil Model, dan memuat View. |
app/Models/ |
Mengelola komunikasi dengan basis data, kueri SQL, dan manipulasi data. |
app/Views/ |
Berisi templat antarmuka pengguna (HTML/CSS) yang dirender ke peramban. |
config/ |
Menyimpan berkas konfigurasi sistem seperti koneksi database dan konstanta global. |
public/ |
Satu-satunya direktori yang dapat diakses publik oleh web server (Document Root). |
public/assets/ |
Menyimpan aset statis: file CSS, JavaScript, gambar, dan ikon. |
vendor/ |
Pustaka pihak ketiga yang dikelola melalui Composer (autoload dependencies). |
composer.json |
Berkas konfigurasi dependensi dan pengaturan autoloading PSR-4. |
Ilustrasi Pohon Folder (Directory Tree)
Berikut adalah representasi visual struktur direktori lengkap dalam format teks:
my-mvc-project/
├── app/
│ ├── Controllers/
│ │ ├── BaseController.php
│ │ └── HomeController.php
│ ├── Models/
│ │ ├── Database.php
│ │ └── User.php
│ └── Views/
│ ├── layouts/
│ │ └── header.php
│ │ └── footer.php
│ └── home/
│ └── index.php
├── config/
│ └── database.php
├── public/
│ ├── assets/
│ │ ├── css/
│ │ │ └── style.css
│ │ └── js/
│ │ └── script.js
│ └── .htaccess
│ └── index.php
├── src/
│ └── Core/
│ ├── App.php
│ └── Controller.php
├── vendor/
│ └── autoload.php
├── .htaccess
├── composer.json
└── README.md
Penjelasan Alur Kerja Komponen MVC
1. Titik Masuk (Public Index)
Semua permintaan peramban diarahkan menuju public/index.php melalui konfigurasi Apache .htaccess atau Nginx rewrite rules. Berkas ini bertugas memuat vendor/autoload.php dari Composer dan menjalankan kelas inti aplikasi (src/Core/App.php) untuk memetakan URL ke Controller yang sesuai.
2. Pengaturan Autoloading PSR-4
Gunakan standar Composer PSR-4 untuk memuat kelas secara otomatis tanpa harus menggunakan fungsi require atau include secara manual di setiap berkas. Tambahkan konfigurasi berikut pada berkas composer.json:
{
"autoload": {
"psr-4": {
"App\": "app/",
"Core\": "src/Core/"
}
}
}
Setelah memperbarui composer.json, jalankan perintah terminal composer dump-autoload untuk memperbarui peta kelas.
Tips Keamanan dan Pemeliharaan Lapangan
- Amankan Document Root: Pastikan peladen web (seperti Apache atau Nginx) mengarah langsung ke folder
public/. Hal ini mencegah pengguna luar mengakses berkas konfigurasi, model, atau basis data yang berada di luar folderpublic/. - Gunakan Variabel Lingkungan: Simpan kredensial sensitif seperti kata sandi basis data dan kunci API di dalam berkas
.envdi direktori akar, bukan ditulis langsung di dalam berkas konfigurasi kode sumber. - Validasi Input: Lakukan penyaringan dan validasi data di dalam Controller sebelum diteruskan ke Model untuk mencegah kerentanan keamanan seperti SQL Injection dan Cross-Site Scripting (XSS).