Tutorial PHP #15: Include, Require, Include Once, Require Once

1. Kenapa Perlu Memecah File?

Bayangkan website dengan 20 halaman dan semuanya punya header dan footer yang sama. Kalau kamu tulis ulang di setiap file, saat ada perubahan kamu harus edit 20 file sekaligus. Dengan include dan require, kamu cukup edit satu file.

2. include

Menyisipkan isi file lain ke dalam file PHP saat ini. Jika file tidak ditemukan, PHP hanya menampilkan warning tapi script tetap berjalan.

<?php
// header.php
?>
<header>
    <nav>
        <a href="index.php">Home</a>
        <a href="about.php">About</a>
    </nav>
</header>
<?php
// index.php
include "header.php";     // sisipkan header
include "includes/config.php";  // sisipkan config
?>
<main>
    <h1>Halaman Utama</h1>
</main>
<?php
include "footer.php";     // sisipkan footer
?>

3. require

Sama seperti include, tapi jika file tidak ditemukan, PHP menampilkan fatal error dan script berhenti. Gunakan require untuk file yang benar-benar wajib ada.

<?php
require "config.php";      // WAJIB ada, kalau tidak ada = error fatal
require "database.php";    // WAJIB ada
include "analytics.php";   // Opsional, kalau tidak ada tetap jalan
?>

4. include_once dan require_once

Versi _once memastikan file hanya dimuat satu kali meskipun dipanggil berkali-kali. Ini penting untuk mencegah error "function already defined" atau "class already declared".

<?php
// Misalkan ada dua file yang keduanya include helpers.php
// Tanpa _once: helpers.php dimuat dua kali = error!

require_once "helpers.php";   // pertama kali: dimuat
require_once "helpers.php";   // kedua kali: diabaikan, tidak error

include_once "config.php";
?>

5. Contoh Struktur Project dengan Include

project/
├── index.php
├── about.php
├── config.php
└── includes/
    ├── header.php
    ├── footer.php
    ├── navbar.php
    └── db.php
<?php
// config.php - konfigurasi global
define("BASE_URL", "http://localhost/project");
define("APP_NAME", "Belajar PHP");
define("DB_HOST", "localhost");
define("DB_NAME", "db_belajar");
?>
<?php
// index.php
require_once "config.php";
require_once "includes/db.php";
include "includes/header.php";
?>
<main>
    <h1>Selamat datang di <?= APP_NAME ?></h1>
</main>
<?php include "includes/footer.php"; ?>

6. Path Absolut vs Relatif

<?php
// Path relatif - relatif dari lokasi file yang menjalankan
include "includes/header.php";
include "../config.php";

// Path absolut - lebih aman, tidak tergantung lokasi file
include __DIR__ . "/includes/header.php";
include dirname(__FILE__) . "/config.php";
?>

Tips: Gunakan __DIR__ untuk path absolut yang dinamis - lebih aman daripada path relatif terutama saat file dipanggil dari folder yang berbeda.

7. Ringkasan

  • include - menyisipkan file, warning jika tidak ada
  • require - menyisipkan file, fatal error jika tidak ada (untuk file wajib)
  • include_once / require_once - mencegah file dimuat lebih dari satu kali
  • Gunakan __DIR__ untuk path yang lebih aman dan konsisten

Tutorial berikutnya membahas superglobal variable di PHP.


ariq fadhil

Im Ariq Tech, a Top Rated Fullstack Developer with 5+ years of experience, delivering high-quality solutions across 50+ projects.