Struktur Folder di Laravel
Laravel, sebagai salah satu framework PHP yang paling populer, menawarkan struktur folder yang terorganisir dengan baik untuk memudahkan pengembangan aplikasi web. Struktur ini dirancang untuk memisahkan berbagai komponen aplikasi, meningkatkan keterbacaan kode, dan mempermudah pemeliharaan. Dengan memahami struktur folder Laravel, pengembang dapat dengan cepat menavigasi proyek mereka dan mengorganisir kode dengan efisien.
Dalam presentasi ini, kita akan menjelajahi setiap folder utama dalam struktur Laravel, membahas fungsinya, dan bagaimana folder-folder ini berinteraksi satu sama lain untuk membentuk aplikasi yang kuat dan terstruktur dengan baik.
Pendahuluan: Pemisahan Logika Aplikasi
Laravel mengadopsi pola arsitektur Model-View-Controller (MVC) untuk memisahkan logika aplikasi menjadi komponen-komponen yang terpisah. Pemisahan ini memungkinkan pengembang untuk mengelola kode dengan lebih efisien dan meningkatkan keterbacaan serta pemeliharaan aplikasi.
Model
Bertanggung jawab untuk logika bisnis dan interaksi dengan database. Model-model ini biasanya ditempatkan di folder 'app/Models'.
View
Menangani presentasi dan tampilan aplikasi. View-view ini umumnya disimpan di folder 'resources/views'.
Controller
Bertindak sebagai perantara antara Model dan View, mengelola alur aplikasi. Controller-controller ini berada di folder 'app/Http/Controllers'.
Dengan struktur ini, Laravel memudahkan pengembang untuk memisahkan concern dan membuat kode yang lebih modular dan mudah dikelola.
Folder App: Inti Aplikasi Laravel
Folder 'app' adalah jantung dari aplikasi Laravel. Ini berisi sebagian besar logika bisnis dan kode inti aplikasi Anda. Folder ini terdiri dari beberapa subfolder penting:
1
Console
Berisi perintah Artisan kustom yang dapat Anda buat untuk mengotomatisasi tugas-tugas tertentu dalam aplikasi Anda.
2
Exceptions
Tempat untuk menangani dan mendefinisikan pengecualian kustom dalam aplikasi Anda.
3
Http
Berisi Controllers, Middleware, dan Requests yang menangani logika aplikasi berbasis HTTP.
4
Models
Menyimpan model-model Eloquent yang mewakili tabel database dan logika bisnis terkait.
Folder 'app' juga dapat berisi subfolder tambahan seperti 'Services', 'Repositories', atau 'Helpers' tergantung pada struktur dan kebutuhan proyek Anda.
Folder Config: Konfigurasi Aplikasi
Folder 'config' adalah tempat di mana semua file konfigurasi aplikasi Laravel disimpan. File-file ini memungkinkan Anda untuk dengan mudah mengatur berbagai aspek aplikasi Anda tanpa harus mengubah kode inti.
app.php
Berisi konfigurasi umum aplikasi seperti nama aplikasi, zona waktu, dan penyedia layanan.
database.php
Mengatur koneksi database, termasuk driver database, host, nama pengguna, dan kata sandi.
mail.php
Konfigurasi untuk layanan email, termasuk driver SMTP dan kredensial.
cache.php
Mengatur driver cache dan opsi penyimpanan cache untuk meningkatkan kinerja aplikasi.
Anda juga dapat membuat file konfigurasi kustom untuk kebutuhan spesifik aplikasi Anda. Laravel menyediakan helper 'config()' untuk mengakses nilai-nilai konfigurasi ini dengan mudah di seluruh aplikasi Anda.
Folder Database: Migrasi dan Seeder
Folder 'database' adalah tempat di mana Anda mengelola struktur dan data awal database Anda. Ini terdiri dari beberapa subfolder penting:
1
Migrations
Berisi file migrasi yang mendefinisikan struktur tabel database. Migrasi memungkinkan Anda untuk mengelola versi schema database dan memudahkan kolaborasi tim.
2
Seeders
Berisi file seeder yang digunakan untuk mengisi database dengan data awal atau data uji. Ini sangat berguna untuk menyiapkan lingkungan pengembangan atau pengujian.
3
Factories
Berisi factory model yang memungkinkan Anda untuk menghasilkan data palsu untuk pengujian atau seeding database dengan cepat.
Dengan menggunakan migrasi dan seeder, Anda dapat dengan mudah mereproduksi struktur dan data database di berbagai lingkungan, memastikan konsistensi antara pengembangan, pengujian, dan produksi.
Folder Public: Aset Publik
Folder 'public' adalah satu-satunya folder yang dapat diakses langsung oleh web server. Ini berisi file 'index.php', yang merupakan titik masuk untuk semua permintaan ke aplikasi Laravel Anda. Selain itu, folder ini juga menyimpan berbagai aset publik:
CSS
File stylesheet yang telah dikompilasi untuk tampilan aplikasi Anda.
JavaScript
File JavaScript yang telah dikompilasi untuk fungsionalitas front-end.
Gambar
Gambar, ikon, dan aset visual lainnya yang digunakan dalam aplikasi Anda.
Font
File font kustom yang digunakan untuk tipografi aplikasi Anda.
Penting untuk diingat bahwa aset di folder 'public' dapat diakses langsung oleh pengguna, jadi jangan menyimpan file sensitif atau konfigurasi di sini. Gunakan folder ini hanya untuk aset yang memang dimaksudkan untuk diakses publik.
Folder Resources: Tampilan dan Translasi
Folder 'resources' berisi file-file yang digunakan untuk membangun tampilan dan antarmuka pengguna aplikasi Anda. Ini termasuk beberapa subfolder penting:
Views
Berisi file template Blade yang mendefinisikan struktur HTML aplikasi Anda. Blade adalah engine template yang kuat dan ekspresif milik Laravel.
Lang
Menyimpan file-file terjemahan untuk mendukung multi-bahasa dalam aplikasi Anda. Ini memungkinkan Anda untuk dengan mudah menginternasionalisasi aplikasi Anda.
Sass/CSS
Berisi file Sass atau CSS mentah yang akan dikompilasi menjadi stylesheet akhir. Ini memungkinkan Anda untuk menggunakan preprocessor CSS untuk styling yang lebih efisien.
Folder 'resources' juga dapat berisi subfolder 'js' untuk file JavaScript mentah dan 'assets' untuk aset lain yang perlu diproses sebelum dipindahkan ke folder 'public'. Dengan menggunakan Laravel Mix, Anda dapat dengan mudah mengkompilasi dan mengoptimalkan aset-aset ini.
Folder Routes: Definisi Rute Aplikasi
Folder 'routes' adalah tempat di mana Anda mendefinisikan semua rute aplikasi Laravel Anda. Ini berisi beberapa file penting:
1
web.php
Berisi definisi rute untuk antarmuka web aplikasi Anda. Rute-rute ini biasanya memiliki middleware web group yang menyediakan fitur seperti manajemen sesi dan CSRF protection.
2
api.php
Digunakan untuk mendefinisikan rute API. Rute-rute ini biasanya stateless dan menggunakan middleware api group.
3
console.php
Memungkinkan Anda untuk mendefinisikan perintah Artisan kustom yang dapat dijalankan melalui CLI.
4
channels.php
Digunakan untuk mendefinisikan saluran broadcasting untuk fitur real-time menggunakan Laravel Echo.
Dengan memisahkan definisi rute ke dalam file-file terpisah, Laravel memungkinkan Anda untuk mengorganisir dan mengelola rute aplikasi Anda dengan lebih efisien. Anda juga dapat membuat file rute kustom untuk modul atau fitur spesifik jika diperlukan.
Folder Storage: Penyimpanan Sementara
Folder 'storage' digunakan oleh Laravel untuk menyimpan berbagai jenis data sementara dan file yang dihasilkan oleh aplikasi. Ini terdiri dari beberapa subfolder penting:
Folder 'storage' juga memiliki subfolder 'public' yang dapat digunakan untuk menyimpan file yang perlu diakses publik, seperti gambar profil pengguna. Anda dapat membuat symlink ke folder ini di dalam folder 'public' menggunakan perintah Artisan 'storage:link'. Penting untuk mengatur izin yang tepat pada folder 'storage' agar dapat ditulis oleh web server, terutama dalam lingkungan produksi.
Folder Tests: Pengujian Otomatis
Folder 'tests' adalah tempat di mana Anda menyimpan semua tes otomatis untuk aplikasi Laravel Anda. Laravel menggunakan PHPUnit sebagai framework pengujian default dan menyediakan berbagai alat untuk memudahkan penulisan dan menjalankan tes.
1
Unit Tests
Tes yang berfokus pada bagian kecil dan terisolasi dari kode Anda, biasanya satu kelas atau metode.
2
Feature Tests
Tes yang mensimulasikan permintaan HTTP ke aplikasi Anda dan memeriksa respons yang dihasilkan.
3
Integration Tests
Tes yang memeriksa interaksi antara berbagai komponen aplikasi Anda.
4
Browser Tests
Tes yang mensimulasikan interaksi pengguna dengan aplikasi Anda menggunakan Laravel Dusk.
Menjalankan tes secara teratur dapat membantu Anda mendeteksi bug lebih awal dan memastikan bahwa perubahan kode tidak merusak fungsionalitas yang ada. Laravel menyediakan perintah Artisan 'test' untuk menjalankan suite tes Anda dengan mudah.
Made with