Home » Dev Insights » Tips Jitu Menyusun Folder dan File Project Agar Lebih Rapi dan Efisien!

Tips Jitu Menyusun Folder dan File Project Agar Lebih Rapi dan Efisien!

onphpid.com – Pernah nggak sih kamu merasa pusing sendiri nyari file di project yang kamu kerjakan berbulan-bulan? Atau tim kamu nanya, “File-nya di mana, ya?” padahal kamu yakin udah naruhnya rapi. Masalah kayak gini sering muncul bukan karena kodenya jelek, tapi karena struktur foldernya semrawut. Padahal, struktur yang baik itu bisa jadi penyelamat di tengah deadline yang mepet.

Menyusun folder dan file project itu ibarat menata rumah. Kalau tiap barang ada tempatnya, hidup jadi lebih tenang. Begitu juga di dunia coding — struktur yang konsisten dan logis bikin kerja tim lebih lancar, debugging lebih cepat, dan scaling project lebih mulus. Di artikel ini, kita bakal bahas prinsip-prinsip praktis dalam menyusun folder dan file project yang rapi, efisien, dan siap tumbuh bareng kebutuhan kamu. Buat kamu yang suka insight pengembangan software lainnya, mampir juga ke Dev Insights di Onphpid.

Kenapa Struktur Folder dan File Itu Penting Banget?

Mungkin ada yang mikir, “Ah, cuma masalah folder doang, apa sih pentingnya?” Eits, jangan salah! Struktur folder dan file yang baik itu punya segudang manfaat, lho:

  • Meningkatkan Keterbacaan (Readability): Ketika project kamu terstruktur rapi, siapa pun yang melihatnya (termasuk kamu di masa depan!) akan lebih mudah memahami alur dan fungsi setiap bagian. Ini penting banget, apalagi kalau kamu kerja tim.
  • Mempercepat Pengembangan: Dengan lokasi file yang jelas, kamu nggak perlu buang-buang waktu mencari-cari. Proses development jadi lebih cepat dan efisien.
  • Memudahkan Debugging: Kalau ada error, kamu bisa langsung tahu di mana letak masalahnya karena struktur yang terorganisir.
  • Mempermudah Maintenance: Ketika project butuh pembaruan atau perbaikan, kamu bisa dengan mudah menemukan bagian yang relevan.
  • Kolaborasi Lebih Lancar: Dalam tim, semua anggota bisa bekerja dengan harmonis karena ada standar struktur yang sama.

Intinya, struktur yang baik itu adalah investasi jangka panjang untuk project kamu!

Folder-Folder Esensial dalam Project Web

Oke, sekarang kita bahas folder-folder penting yang biasanya ada di project web. Ini adalah panduan umum, ya, bisa kamu sesuaikan dengan kebutuhan projectmu.

  • public/ atau htdocs/ atau www/: Ini adalah folder yang paling penting! Semua file yang bisa diakses langsung oleh browser (HTML, CSS, JavaScript, gambar) harus ada di sini. Kenapa? Karena ini adalah “pintu depan” project kamu. Apa pun di luar folder ini tidak boleh diakses langsung dari web untuk alasan keamanan.
  • src/ atau app/: Nah, di sinilah semua kode “otak” project kamu berada. Ini bisa berisi controller, model, view (jika tidak di resources/views), service, repository, dan logika bisnis lainnya. Folder ini adalah inti dari aplikasi kamu.
  • config/: Berisi semua file konfigurasi aplikasi kamu, seperti pengaturan database, API key, atau variabel lingkungan (environment variables). Penting untuk memisahkan konfigurasi dari kode utama agar mudah diubah tanpa menyentuh logika aplikasi.
  • database/: Folder ini biasanya berisi migrasi database (schema perubahan database), seeder (data awal untuk database), atau factory (untuk membuat data dummy).
  • resources/: Umumnya berisi aset yang akan di-compile atau diproses sebelum di-deploy ke public/. Contohnya:
    • resources/views/: File template (misalnya Blade di Laravel, Twig di Symfony) yang akan dirender menjadi HTML.
    • resources/js/: File JavaScript mentah (misalnya kode Vue.js, React.js, atau vanilla JS yang belum di-minify).
    • resources/css/ atau resources/sass/: File CSS mentah atau file Sass/Less yang perlu dikompilasi.
    • resources/lang/: File terjemahan untuk aplikasi multibahasa.
  • storage/: Digunakan untuk menyimpan file yang di-generate oleh aplikasi, tapi tidak boleh diakses langsung dari web. Contohnya: file log, cache, sesi pengguna, file upload (jika tidak disimpan di cloud), atau data sementara lainnya.
  • tests/: Folder ini berisi semua unit test, feature test, atau integration test untuk memastikan kode kamu berfungsi dengan baik. Penting banget untuk membuat tes!
  • vendor/: Ini adalah folder di mana semua dependensi atau library pihak ketiga yang kamu instal melalui Composer (atau package manager lainnya) disimpan. Jangan pernah mengubah file di folder ini secara manual!
  • bootstrap/: Berisi file-file yang diperlukan untuk “booting” atau memulai aplikasi, seperti autoloading atau konfigurasi awal.
  • routes/: Jika kamu menggunakan framework yang memisahkan definisi route, folder ini akan berisi file-file yang mendefinisikan URL dan handler-nya.

Mengintip Struktur Directory Framework Populer: Laravel, CodeIgniter 4, dan Symfony

Sekarang, mari kita bandingkan bagaimana framework PHP populer seperti Laravel, CodeIgniter 4, dan Symfony menyusun struktur direktorinya. Ini bisa jadi inspirasi buat kamu dalam membangun project dari nol atau memahami struktur framework yang kamu gunakan. Kita juga akan menyinggung PHP-FIG sebagai standar de facto.

Laravel

Laravel dikenal dengan struktur yang intuitif dan rapi.

  • app/: Ini adalah jantung aplikasi Laravel, berisi Models, Http/Controllers, Http/Middleware, Providers, Exceptions, dan Console. Mirip dengan konsep src/ atau app/ yang kita bahas tadi.
  • bootstrap/: Berisi file app.php untuk bootstrapping framework dan folder cache untuk cache framework.
  • config/: Semua file konfigurasi aplikasi.
  • database/: Migrations, seeders, dan factories.
  • public/: Folder public tempat index.php berada, CSS, JS, dan gambar yang bisa diakses publik.
  • resources/: views (Blade templates), js (JavaScript assets), css (CSS assets), dan lang (localization files).
  • routes/: File definisi route (web.php, api.php, console.php, channels.php).
  • storage/: Logs, cache, sessions, dan file yang di-upload.
  • tests/: Unit dan feature tests.
  • vendor/: Dependensi Composer.

Laravel sangat mengikuti konsep “convention over configuration,” artinya ada konvensi penamaan dan lokasi file yang disarankan untuk memudahkan pengembangan.

CodeIgniter 4

CodeIgniter 4 (CI4) memiliki struktur yang lebih modern dibandingkan versi sebelumnya dan mengadopsi banyak praktik baik.

  • app/: Mirip dengan Laravel, ini adalah folder utama untuk kode aplikasi kamu. Di dalamnya ada Controllers, Models, Views, Libraries, Helpers, Config, Database, Filters, Language, ThirdParty, Validation, Commands, Entities, dan Exceptions. CI4 juga memiliki folder Config di dalam app/ untuk konfigurasi khusus aplikasi.
  • public/: Sama seperti Laravel, ini adalah folder root untuk web server. Berisi index.php dan aset publik.
  • writable/: Ini adalah folder untuk data yang bisa ditulis oleh aplikasi, seperti logs, cache, uploads. Mirip dengan storage/ di Laravel.
  • system/: Berisi inti dari framework CodeIgniter. Jangan diotak-atik!
  • tests/: Folder untuk test aplikasi kamu.
  • vendor/: Dependensi Composer.

CI4 juga menekankan pada penggunaan namespace dan autoloading sesuai standar PSR-4.

Symfony

Symfony dikenal sebagai framework yang sangat fleksibel dan modular, memberikan kebebasan lebih dalam struktur.

  • bin/: Berisi executable script seperti console untuk menjalankan perintah Symfony CLI.
  • config/: File konfigurasi (YAML atau XML).
  • public/: Mirip dengan Laravel dan CI4, ini adalah “web root” yang berisi index.php dan aset publik.
  • src/: Ini adalah tempat kode aplikasi kamu berada. Symfony tidak memiliki struktur yang sangat kaku di dalam src/. Kamu bisa mengatur subfolder di dalamnya sesuai kebutuhan, misalnya: src/Controller, src/Entity, src/Repository, src/Service. Ini sangat cocok dengan konsep src/ yang kita bahas di awal.
  • var/: Mirip dengan storage/ di Laravel atau writable/ di CI4, ini adalah tempat untuk cache, logs, dan data sementara lainnya.
  • vendor/: Dependensi Composer.
  • tests/: Folder untuk test aplikasi kamu.

Fleksibilitas Symfony memungkinkan kamu membuat struktur yang sangat disesuaikan, namun juga menuntut kamu untuk memiliki pemahaman yang kuat tentang desain arsitektur.

PHP-FIG (PHP Framework Interop Group) dan Pentingnya Standar

Saat membahas struktur direktori dan kode PHP, tidak lengkap rasanya jika tidak menyinggung PHP-FIG. PHP-FIG adalah kelompok sukarelawan dari berbagai proyek PHP yang membuat standar interoperabilitas (kemampuan bekerja sama) untuk kode PHP. Beberapa standar yang relevan dengan bahasan kita adalah:

  • PSR-4 (Autoloading Standard): Ini adalah standar yang mengatur bagaimana file-file kelas PHP dimuat secara otomatis (autoloading) berdasarkan namespace dan lokasi file. Semua framework modern seperti Laravel, CodeIgniter 4, dan Symfony mengimplementasikan PSR-4. Artinya, jika kamu membuat kelas dengan namespace App\Http\Controllers dan file-nya berada di app/Http/Controllers/, maka secara otomatis kelas tersebut bisa ditemukan. Ini adalah dasar dari struktur app/ atau src/ yang terorganisir.
  • PSR-1 (Basic Coding Standard) & PSR-12 (Extended Coding Style Guide): Standar ini mengatur gaya penulisan kode, seperti penamaan kelas, method, variabel, dan indentasi. Meskipun tidak secara langsung mengatur struktur folder, standar ini mendukung konsistensi yang memudahkan kolaborasi.

Dengan mematuhi standar PSR, terutama PSR-4, kita bisa memastikan bahwa kode kita bisa saling berinteroperasi dengan library atau framework lain, dan juga membuat kode lebih mudah dipahami oleh developer lain yang terbiasa dengan standar tersebut.

Pro Tips dalam Menyusun Directory Structure

Setelah melihat contoh framework dan standar, ini dia beberapa pro tips untuk menyusun directory structure kamu:

Berikut versi yang sudah dimulai dari heading h3 dan menggunakan sub-sub heading h4:

Prinsip Umum dalam Menyusun Struktur Folder Project

Konsistensi adalah Kunci

Sekali kamu memutuskan suatu struktur, patuhi itu. Jangan tiba-tiba mengubah nama folder atau memindahkan file tanpa alasan yang jelas. Konsistensi akan membuat project kamu lebih mudah dipahami dan dikelola.

Gunakan Nama yang Jelas dan Deskriptif

Hindari singkatan yang ambigu agar tidak membingungkan di kemudian hari:

  • Gunakan controllers/ daripada ctrl/
  • Gunakan database/ daripada db/

Nama folder yang deskriptif akan memperjelas fungsi dan isi di dalamnya.

Flat vs. Nested Folder Structure

Struktur Flat

Gunakan jika folder hanya berisi sedikit file. Semua file bisa berada dalam satu level untuk efisiensi.

Struktur Nested

Gunakan jika ada banyak file atau submodul. Contoh:

app/
└── Http/
    └── Controllers/

Struktur ini memudahkan pengelompokan jika ada banyak jenis controller (misalnya API, Web, Admin).

Group by Feature vs. Group by Type

Group by Type (Horizontal)

Mengelompokkan berdasarkan tipe file:

controllers/
models/
views/

Cocok untuk project kecil hingga menengah dengan struktur standar.

Group by Feature (Vertical)

Mengelompokkan berdasarkan fitur atau domain:

src/
├── User/
│   ├── UserController.php
│   ├── User.php
│   └── UserService.php
├── Product/
│   ├── ProductController.php
│   ├── Product.php
│   └── ProductRepository.php

Keunggulan:

  • Modular
  • Mudah di-refactor
  • Cocok untuk project besar dan scalable

Prinsip Pemisahan dan Otomatisasi

Pisahkan Kode Berdasarkan Tanggung Jawab

Setiap folder sebaiknya punya tanggung jawab spesifik. Contoh pemisahan yang baik:

  • config/ → Konfigurasi aplikasi
  • services/ → Logika bisnis
  • public/ → File statis (CSS, JS, gambar)
  • src/ → Source code backend

Manfaatkan Namespace dan Autoloading

Untuk project PHP modern:

  • Gunakan namespace sesuai struktur folder
  • Terapkan autoloading PSR-4
  • Hindari penggunakan require manual

Ini akan mempercepat development dan mempermudah scaling.

Praktik Tambahan

Dokumentasi per Folder

Di project besar, kamu bisa tambahkan file README.md dalam setiap folder utama. Isinya:

  • Penjelasan fungsi folder
  • Hubungan antar file
  • Catatan teknis penting

Gunakan .gitignore dengan Benar

Abaikan file/folder yang tidak perlu di version control:

vendor/
node_modules/
storage/
public/build/
.env

Tujuannya untuk menjaga repo tetap bersih dan aman.

Iterasi dan Refaktor

Struktur awal project bukan harga mati. Selalu evaluasi dan refaktor bila diperlukan:

  • Lakukan bertahap
  • Komunikasikan dengan tim
  • Hindari refaktor besar secara mendadak

Kalau kamu butuh contoh implementasi dari salah satu pendekatan di atas, tinggal sebutkan jenis project-nya.

Dengan menerapkan tips-tips di atas, project kamu tidak hanya akan terlihat rapi, tapi juga akan lebih mudah dikelola, dikembangkan, dan di-maintain dalam jangka panjang. Selamat mencoba!

Leave a Comment