Laravel adalah framework PHP yang sangat populer dan banyak digunakan untuk pengembangan aplikasi web. Salah satu alasan di balik popularitasnya adalah struktur proyek yang terorganisir dengan baik.
Memahami struktur proyek Laravel sangat penting bagi pengembang, terutama bagi pemula yang baru memulai. Artikel ini akan membahas struktur folder dalam proyek Laravel dan menjelaskan fungsi masing-masing folder serta subfolder yang ada, termasuk penjelasan tentang arsitektur Model-View-Controller (MVC) yang menjadi dasar pengembangan aplikasi di Laravel.
Struktur Folder Proyek Laravel
Setelah Anda membuat proyek Laravel baru, Anda akan melihat struktur folder berikut:
nama_proyek/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
└── tests/
Mari kita bahas setiap folder dan fungsinya.
1. Folder app/
Folder app/ adalah tempat di mana sebagian besar logika aplikasi Anda berada. Ini adalah folder utama untuk kode aplikasi Anda, termasuk model, controller, dan service. Di dalam folder ini, Anda akan menemukan beberapa subfolder penting:
- Http/: Berisi controller dan middleware. Controller bertanggung jawab untuk menangani permintaan HTTP dan mengembalikan respons yang sesuai. Middleware digunakan untuk memfilter permintaan HTTP yang masuk.
- Models/: Tempat di mana model Eloquent Anda berada. Model ini berfungsi sebagai representasi dari tabel di database dan menyediakan metode untuk berinteraksi dengan data.
- Console/: Berisi perintah Artisan yang dapat Anda buat untuk menjalankan tugas tertentu di aplikasi Anda.
2. Folder bootstrap/
Folder bootstrap/ berisi file yang diperlukan untuk memulai aplikasi Laravel. Salah satu file penting di sini adalah app.php, yang menginisialisasi aplikasi dan memuat semua komponen yang diperlukan.
Folder ini juga berisi file cache yang digunakan untuk meningkatkan performa aplikasi.
3. Folder config/
Folder config/ berisi file konfigurasi untuk berbagai aspek aplikasi Anda, seperti database, mail, dan session. Setiap file di dalam folder ini mengatur pengaturan tertentu yang dapat disesuaikan sesuai kebutuhan aplikasi.
Misalnya, file database.php mengatur koneksi database yang digunakan oleh aplikasi.
4. Folder database/
Folder database/ berisi semua yang berkaitan dengan database. Ini termasuk:
- migrations/: Berisi file migrasi yang digunakan untuk membuat dan mengubah struktur tabel di database. Migrations memungkinkan Anda untuk mengelola skema database dengan mudah.
- factories/: Berisi definisi model factory yang digunakan untuk menghasilkan data palsu untuk pengujian.
- seeds/: Berisi file seed yang digunakan untuk mengisi database dengan data awal.
5. Folder public/
Folder public/ adalah folder yang dapat diakses secara publik dan berfungsi sebagai titik masuk aplikasi. Semua file yang dapat diakses oleh pengguna, seperti file CSS, JavaScript, dan gambar, ditempatkan di sini.
File index.php di dalam folder ini adalah file utama yang menangani semua permintaan HTTP dan memuat aplikasi Laravel.
6. Folder resources/
Folder resources/ berisi semua sumber daya yang digunakan oleh aplikasi, termasuk:
- views/: Berisi file tampilan Blade yang digunakan untuk menghasilkan HTML. Blade adalah templating engine Laravel yang memungkinkan Anda untuk membuat tampilan yang dinamis.
- lang/: Berisi file bahasa yang digunakan untuk mendukung internasionalisasi aplikasi.
- sass/ dan js/: Berisi file CSS dan JavaScript yang akan diproses oleh Laravel Mix.
7. Folder routes/
Folder routes/ berisi semua file rute aplikasi Anda. Di dalam folder ini, Anda akan menemukan file web.php dan api.php.
File web.php digunakan untuk mendefinisikan rute untuk aplikasi web, sedangkan api.php digunakan untuk mendefinisikan rute untuk API. Rute ini menghubungkan URL dengan controller yang sesuai.
8. Folder storage/
Folder storage/ digunakan untuk menyimpan file yang dihasilkan oleh aplikasi, seperti log, cache, dan file yang diunggah. Di dalam folder ini, Anda akan menemukan beberapa subfolder penting:
- app/: Tempat untuk menyimpan file yang diunggah oleh pengguna.
- framework/: Berisi file cache dan sesi yang digunakan oleh aplikasi.
- logs/: Berisi file log yang mencatat aktivitas aplikasi, yang sangat berguna untuk debugging.
9. Folder tests/
Folder tests/ berisi semua file pengujian untuk aplikasi Anda. Laravel mendukung pengujian unit dan pengujian fungsional, dan folder ini memungkinkan Anda untuk mengorganisir pengujian dengan baik.
Anda dapat membuat pengujian untuk controller, model, dan fitur lainnya di dalam folder ini.
Arsitektur MVC di Laravel
Laravel mengadopsi arsitektur Model-View-Controller (MVC), yang merupakan pola desain yang memisahkan aplikasi menjadi tiga komponen utama:
- Model: Model bertanggung jawab untuk mengelola data dan logika bisnis aplikasi. Di Laravel, model biasanya terletak di folder app/Models/. Model berfungsi sebagai representasi dari tabel di database dan menyediakan metode untuk berinteraksi dengan data, seperti mengambil, menyimpan, dan memperbarui informasi.
- View: View adalah komponen yang bertanggung jawab untuk menampilkan data kepada pengguna. Di Laravel, file tampilan menggunakan Blade templating engine dan terletak di folder resources/views/. View menerima data dari controller dan menghasilkan HTML yang akan ditampilkan di browser.
- Controller: Controller bertindak sebagai penghubung antara model dan view. Controller menerima permintaan dari pengguna, memproses data menggunakan model, dan mengembalikan respons dalam bentuk view. Di Laravel, controller terletak di folder app/Http/Controllers/. Controller membantu menjaga logika aplikasi tetap terorganisir dan memisahkan tanggung jawab antara pengolahan data dan tampilan.
Dengan menggunakan arsitektur MVC, Laravel memungkinkan pengembang untuk membangun aplikasi yang lebih terstruktur, mudah dipelihara, dan scalable.
Kesimpulan
Memahami struktur proyek Laravel dan arsitektur MVC sangat penting bagi pengembang yang ingin membangun aplikasi web yang efisien dan terorganisir.
Dengan mengetahui fungsi masing-masing folder dan subfolder, serta bagaimana komponen MVC berinteraksi, Anda dapat dengan mudah menavigasi proyek Laravel dan mengembangkan aplikasi dengan lebih efektif.
Struktur yang terorganisir ini juga membantu dalam kolaborasi tim dan pemeliharaan kode di masa depan.