Konsep 'includes' sering digunakan untuk menyusun kode menjadi bagian-bagian kecil yang dapat digunakan ulang. Dengan memisahkan komponen seperti header, footer, atau fungsi umum ke file terpisah, pengembangan dan pemeliharaan situs menjadi lebih efisien.
Panduan ini menjelaskan pengertian dasar includes, metode yang biasa dipakai, contoh pemakaian praktis, serta hal-hal yang perlu diperhatikan terkait keamanan dan organisasi file.
Apa itu 'include' dalam pengembangan web?
Secara umum, 'include' merujuk pada praktik memasukkan isi satu berkas ke berkas lain sehingga kode dapat dipakai ulang. Ini membantu menghindari pengulangan kode (duplication) dan memudahkan pembaruan: ketika sebuah komponen diubah, perubahan tersebut tercermin di seluruh halaman yang meng-include berkas itu.
Include dapat terjadi di berbagai lapisan teknologi: pada sisi server (mis. perintah untuk memasukkan file kode saat proses rendering), pada level template engine, atau bahkan pada build step saat menghasilkan berkas statis. Prinsipnya sama—memisahkan elemen fungsional atau presentasional menjadi modul-modul kecil.
Metode umum: PHP include, Server-Side Includes, dan partials
PHP menyediakan fungsi seperti include, include_once, require, dan require_once untuk memasukkan berkas PHP atau HTML. Contoh sederhana: include 'header.php'; akan menyisipkan isi header.php pada titik tersebut saat skrip dijalankan.
Server-Side Includes (SSI) adalah mekanisme yang lebih sederhana untuk memasukkan potongan HTML atau output dari skrip pada server web yang mendukungnya. Sintaks SSI biasanya berbeda, misalnya <!--#include virtual="/inc/header.html" -->.
Di lingkungan modern, banyak framework dan template engine (mis. Blade, Twig, Handlebars) menawarkan konsep partials atau components—potongan template yang dapat dipanggil dari halaman lain. Selain itu, pada aplikasi front-end, komponen UI (di React, Vue, dsb.) berfungsi serupa sebagai 'includes' yang terstruktur.
Contoh penggunaan praktis: header, footer, dan modul
Penggunaan include yang paling umum adalah memisahkan header dan footer. Daripada menulis ulang markup navigasi atau footer di setiap halaman, buat berkas terpisah: header.php dan footer.php, lalu panggil di masing-masing halaman.
Contoh sederhana di PHP:
1) Buat file header.php dengan markup <head> dan bagian navigasi.
2) Di halaman utama, pakai include 'header.php'; ... konten halaman ... include 'footer.php';
Selain header/footer, includes cocok untuk modul seperti form kontak, komponen komentar, atau blok sisi (sidebar). Dengan membuat modul modular, tim dapat bekerja paralel dan menguji bagian secara terpisah.
Keamanan dan validasi saat menggunakan include
Salah satu risiko penggunaan include adalah memasukkan berkas berdasarkan input pengguna tanpa validasi, yang membuka peluang local file inclusion (LFI) atau remote file inclusion (RFI). Selalu hindari menyusun path file langsung dari parameter yang diberikan pengguna.
Praktik aman meliputi: membatasi direktori sumber include (whitelist), memvalidasi dan menormalisasi nama file, serta menggunakan mekanisme seperti include_once untuk mencegah eksekusi berulang. Jika perlu memuat file berdasarkan kondisi, gunakan pemetaan (array) yang jelas antara nilai yang diizinkan dan path aktual.
Jangan mencampur berkas yang dapat diakses publik dan berkas yang berisi data sensitif. Simpan berkas yang tidak boleh diakses langsung di folder di luar root publik atau gunakan aturan server untuk mencegah akses langsung.
Tips organisasi dan pemeliharaan file include
Susun struktur folder yang konsisten, misalnya /includes/ untuk potongan kode presentasi, /partials/ untuk template kecil, dan /lib/ untuk fungsi-fungsi yang bukan tampilan. Dengan struktur jelas, onboarding anggota tim baru menjadi lebih mudah.
Gunakan penamaan yang deskriptif: header-main.php, nav-primary.php, sidebar-latest.php, sehingga fungsi berkas segera jelas. Dokumentasikan kontrak antar-komponen: parameter yang diharapkan, variabel yang tersedia, dan dependensi.
Untuk proyek besar, pertimbangkan penggunaan template engine atau sistem komponen yang mendukung inheritance dan scoped variables agar konflik nama minim. Selain itu, tetapkan konvensi tentang kapan sebuah include boleh menangani logika bisnis versus hanya menampilkan data.