4. Include dan Require

PHP: Pembahasan Tentang Include Dan Require

Kita masih berada pada seri tutorial belajar PHP tingkat menengah, ini adalah pertemuan ke-4. Pada pertemuan-pertemuan sebelumnya kita telah membahas hal-hal yang berkaitan dengan tanggal dan waktu, baik dengan pendekatan prosedural mau pun pendekatan objek. Kita juga telah membahas tentang cara menampilkan tanggal dan waktu dalam bahasa Indonesia.

Pada pertemuan kali ini, kita akan membahas sesuatu yang berbeda dan tidak kalah penting dengan pembahasan sebelumnya. Yaitu pembahasan tentang perintah include dan require.

Apa Itu Include dan Require?

include dan require adalah dua fungsi atau dua perintah dalam PHP yang bertugas untuk memuat suatu file PHP, di dalam file PHP yang lain.

Secara umum kedua perintah tersebut memiliki tugas yang sama. Hanya saja, dari segi error, keduanya memiliki perbedaan:

  1. Jika file yang di-load ternyata tidak ada, perintah include akan tetap mengeksekusi baris kode program selanjutnya.
  2. Sedangkan jika file yang di-load dengan fungsi require ternyata tidak ada, maka ia akan berhenti di mana fungsi require tersebut dipanggil, dan tidak melanjutkan pengeksekusian kode program berikutnya.

Kenapa Perlu Fungsi Include dan Require?

Alasannya adalah: ketika program yang kita bangun semakin besar, maka ada semakin banyak fungsi atau konten halaman yang butuh kita panggil atau tampilkan berkali-kali di berbagai tempat. Dari pada mendefinisikan fungsi atau halaman tersebut secara berulang, kita lebih baik hanya mendefinisikannya sekali saja, untuk kemudian memanggilnya dari berbagai tempat dari file yang berbeda-beda.

Misalkan kita memiliki sebuah projek web profil, kita memiliki 3 halaman utama yaitu index.phpabout.php, dan contact.php.

Ketiga halaman tersebut semuanya memiliki header, footer, dan navbar yang sama. Sehingga dari pada kita membuat 3 header untuk masing-masing halaman, begitu juga 3 buah footer, dan 3 buah navbar. Lebih baik kita hanya membuat satu komponen saja, yang komponen tersebut akan dimuat di halaman-halaman yang membutuhkannya.

Di situlah kita membutuhkan fungsi include dan require.

Persiapan File

Agar lebih jelas lagi, mari kita buat file seperti berikut ini:

├── partials
|   ├── footer.php
|   ├── header.php
|   └── navbar.php
├── about.php
├── contact.php
└── index.php

Lalu ubah 3 file di dalam direktori partials masing-masing menjadi seperti di bawah:

  1. File partials/footer.php

    <?php
    
    $tahunSekarang = date("Y");
    
    echo "Copyright &copy; {$tahunSekarang} jagongoding.com";
    
  2. File partials/header.php

    <?php
    
    echo "<h1>Selamat datang di Jago Ngoding</h1>";
    
  3. File partials/navbar.php

    <nav>
      <a href="index.php">Home</a>
      <a href="about.php">About</a>
      <a href="contact.php">Contact</a>
    </nav>
    

Kita katakan bahwa 3 buah halaman utama di atas yaitu about.phpcontact.php, dan index.php, masing-masing memuat file yang ada dalam direktori partials mulai dari footer, header, hingga navbar.

Sehingga ketika misalkan kita ingin mengubah footer di 3 halaman tersebut, kita cukup mengubah satu file saja yaitu partials/footer.php. Dan boom! Konten footer di 3 halaman utama langsung ikut berubah semuanya.

Nah, bagaimana cara melakukannya?

Contoh Penggunaan include dan require

Ada dua macam cara penggunaan include dan require. Cara yang pertama adalah memanggilnya seperti kita memanggil fungsi: yaitu dengan tanda kurung. Sedangkan cara yang kedua adalah memanggilnya sebagai statement seperti saat kita memanggil echo.

Cara pertama (contoh file index.php):

<?php
# file index.php

require('partials/navbar.php');
include('partials/header.php');

echo "<div>Ini adalah halaman utama</div>";

require('partials/footer.php');

Cara kedua (contoh file about.php):

<?php
# file about.php

require 'partials/navbar.php';
include 'partials/header.php';

echo "<div>Ini adalah halaman about</div>";

require 'partials/footer.php';

Sepertinya cara kedua nampak lebih cantik buat saya. Setuju atau tidak?

Anda bisa ubah sendiri konten untuk file contact.php agar sama seperti index.php dan about.php. Lalu coba jalankan aplikasi pada browser, dan lihat bagaimana hasilnya.

Contoh Penggunaan include_once dan require_once

Fungsi alternatif dari include dan require adalah: include_once dan require_once.

Dua fungsi tersebut hanya akan me-load file satu kali saja. Artinya jika file tersebut sudah di-load sebelumnya, dia tidak akan di-load lagi di file yang sama.

Perhatikan dua contoh kode program berikut ini:

<?php

include 'partials/header.php';
include 'partials/header.php';

Kode program di atas akan memuat file partials/header.php sebanyak dua kali. Artinya: file header akan ditampilkan dua kali juga. Berbeda dengan jika kita memanggilnya dengan include_once atau require_once, sebanyak apa pun kita memanggil file yang sama, ia akan tetap dimuat satu kali saja.

<?php

include_once 'partials/header.php';
include_once 'partials/header.php';

Memuat File Dari Parent Direktori Yang Berbeda

Dalam contoh kasus di atas, kita bisa me-load file dengan mudah karena ia masih berada di satu direktori parent yang sama. Bagaimana kalau kita ingin memuat file dari direktori parent yang lainnya?

Oke, bayangkan kita memiliki struktur seperti berikut:

├── partials
|   ├── footer.php
|   ├── header.php
|   └── navbar.php
├── articles
|   ├── article-1.php
|   ├── article-2.php
├── about.php
├── contact.php
└── index.php

Bayangkan kita sekarang berada pada file articles/article-2.php. Lalu kita ingin memuat file navbar dan footer yang berada pada direktori partials. Bagaimana caranya?

Caranya adalah: kita harus keluar dulu dari direktori file yang kita edit menggunakan alamat .., lalu setelah itu kita definisikan lokasi nama file yang ingin kita muat.

Perhatikan contoh file articles-2.php berikut:

<?php

require_once '../partials/navbar.php';

// konten article-2

require_once '../partials/footer.php';

Memanggil Fungsi Dari File Lain

Secara umum, jika kita meng-include atau me-require suatu file dan di dalamnya terapat suatu fungsi, kita langsung bisa memanggilnya. Misalkan kita memiliki file seperti berikut:

├── bantuan
|   ├── fungsi-luas-bangun-ruang.php
|   ├── fungsi-volume-bangun-ruang.php
└── index.php

File bantuan/fungsi-luas-bangun-ruang.php:

<?php

function hitungLuasPermukaanBalok (float $p, float $l, float $t) {
  return ($p * $l * 2) + ($p * $t * 2) + ($l * $t * 2);
}

File bantuan/fungsi-volume-bangun-ruang.php:

<?php

function hitungVolumeBalok (float $p, float $l, float $t) {
  return $p * $l * t;
}

Nah, pada file index.php, kita akan memanggil 2 fungsi hitungLuasPermukaanBalok() dan hitungVolumeBalok() yang berada pada file yang berbeda.

Caranya mudah saja, kita tinggal meng-include atau me-require-nya, setelah itu kita langsung bisa memanggil 2 fungsi tersebut.

Perhatikan kode program file index.php berikut:

<?php
require_once 'bantuan/fungsi-luas-bangun-ruang.php';
require_once 'bantuan/fungsi-volume-bangun-ruang.php';

$panjang = 10;
$lebar = 5;
$tinggi = 3;

echo "Luas permukaan: " . hitungLuasPermukaanBalok($panjang, $lebar, $tinggi) . "<br>";
echo "Volume: " . hitungVolumeBalok($panjang, $lebar, $tinggi) . "<br>";

Memanggil Variabel Dari File Lain

Sama saja seperti fungsi, kita juga bisa memanggil variabel dari file yang kita include atau kita require. Hanya saja, untuk variabel, ada ruang lingkupnya. Ada variabel yang bersifat lokal, dan ada variabel yang bersifat global.

Insyaallah kita akan mengambil pembahasan tentang ruang lingkup variabel pada pertemuan selanjutnya.

Mana Yang Harus Digunakan Include atau Require?

Seperti yang sudah kita singgung sebelumnya, bahwa include dan require sebenarnya sama saja. Yang membedakan keduanya adalah error yang dihasilkan jika file yang dimuat ternyata tidak ada.

include akan memproduksi error warning, yang mana kode program selanjutnya masih akan tetap dieksekusi.

Sedangkan require akan memproduksi fatal error yang akan memberhentikan alur kerja program yang artinya kode program selanjutnya tidak akan pernah dieksekusi.

Pertanyaan, kapan harus menggunakan include dan kapan harus menggunakan require?

Untuk lebih amannya, lebih baik kita hanya menggunakan require saja. Apalagi kalau projek yang kita kerjakan sudah semakin besar. Hal ini akan memudahkan kita mendeteksi error jika terjadi error, dan mengurangi celah keamanan dari projek yang kita bangun.

Pembahasan Selanjutnya

Setelah mempelajari bagaimana cara memuat suatu file PHP di dalam file PHP yang lain, insyaallah di pertemuan yang akan datang kita akan membahas tentang variabel. Yaitu tentang ruang lingkupnya, apa itu variabel lokal dan apa itu variabel global, serta variabel-variabel bawaan PHP.