PHP Menengah
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:
- Jika file yang di-load ternyata tidak ada, perintah
include
akan tetap mengeksekusi baris kode program selanjutnya. - Sedangkan jika file yang di-load dengan fungsi
require
ternyata tidak ada, maka ia akan berhenti di mana fungsirequire
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.php
, about.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:
File
partials/footer.php
<?php $tahunSekarang = date("Y"); echo "Copyright © {$tahunSekarang} jagongoding.com";
File
partials/header.php
<?php echo "<h1>Selamat datang di Jago Ngoding</h1>";
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.php
, contact.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.