include dan require PHP

Code include dan require berguna untuk memasukkan isi dari sebuah file ke dalam file yang menggunakan code include tersebut.

Syntax

include 'nama file';

atau

require 'nama file';

include

Contoh, kita akan membuat sebuah file menu yang akan digunakan untuk semua halaman web. File menu tersebut kita beri nama [menu.php] dengan code seperti di bawah ini:

Isi file menu.php:

<html>
<body>
<a href="http://www.domain.com/index.php">Home</a> - 
<a href="http://www.domain.com/about.php">About Us</a> - 
<a href="http://www.domain.com/contact.php">Contact Us</a> <br />

Selanjutnya, kita membuat file [index.php] di directory yang sama dengan file [menu.php].

Di dalam file [index.php] kita menggunakan code include untuk memasukkan isi dari file [menu.php] ke dalam file [index.php]. berikut ini adalah isi dari file [index.php]:

Isi file index.php:

<?php include 'menu.php'; ?>
<p>Halaman utama ini menggunakan menu yang dapat ditampilkan di semua web page!</p>
</body>
</html>

Hasil isi file index.php:

Home – About Us – Contact Us
Halaman utama ini menggunakan menu yang dapat ditampilkan di semua web page!

Source code yang dilihat visitor

Setelah code include dijalankan, isi dari file [menu.php] sudah otomatis ada di dalam file [index.php]. Sehingga kalau visitor melihat source code file [index.php] maka visitor juga akan melihat isi dari file [menu.php].

Source code dari file [index.php] yang dilihat oleh visitor:

<html>
<body>
<a href="index.php">Home</a> - 
<a href="about.php">About Us</a> - 
<a href="contact.php">Contact Us</a> <br />
<p>Halaman utama ini menggunakan menu yang dapat ditampilkan di semua web page!</p>
</body>
</html>

require

Code require berfungsi sama dengan include.

Perbedaan include dan require

Walaupun berfungsi sama, include dan require memiliki perbedaan saat tidak berhasil menemukan file yang dicarinya, yaitu:

  • Code require akan menghasilkan fatal error (E_COMPILE_ERROR) dan script akan berhenti berjalan.
  • Code include hanya akan menghasilkan pesan error (E_WARNING) dan script akan terus berjalan.

Code PHP include:

<?php
include 'filetidakada.php';
echo "Hello World!";
?>

Hasil code PHP include:

PHP Warning: include(filetidakada.php): failed to open stream: No such file or directory in /home/jujushare/public_html/jujuscript.php on line 2
PHP Warning: include(): Failed opening ‘filetidakada.php’ for inclusion (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/jujushare/public_html/jujuscript.php on line 2

Hello World!

Pada contoh di atas, code echo masih bisa dijalankan.

Code PHP require:

<?php
require 'filetidakada.php';
echo "Hello World!";
?>

Hasil code PHP require:

PHP Warning: require(filetidakada.php): failed to open stream: No such file or directory in /home/jujushare/public_html/jujuscript.php on line 2
PHP Fatal error: require(): Failed opening required ‘filetidakada.php’ (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/jujushare/public_html/jujuscript.php on line 2

Pada contoh di atas, code echo tidak dijalankan setelah terjadi error.

Absolute path dan relative path

File path (alamat file) yang digunakan untuk include bisa dibagi menjadi dua jenis, yaitu absolute path dan relative path.

Relative path

Relative path adalah alamat file yang di-iclude tergantung dari lokasi alamat file yang meng-include.

Contoh,

Ada dua buah file yaitu [index.php] dan [a.php]. Pada file [index.php] yang sedang digunakan ada code include untuk memasukkan isi file [a.html] ke dalam file [index.php].

File [index.php] berada di dalam directory:

/var/www/mydomain.com/products/sales/

File [a.php] berada di dalam directory:

/var/www/mydomain.com/products/

Lokasi file [a.php] berada satu directory lebih tinggi dari file [index.php] sehingga code include pada file [index.php] yang menggunakan relative path tampak seperti berikut ini:

<php
include ("../a.php");

Code [../] pada relative path menunjukkan bahwa alamat file [a.php] berada satu tingkat lebih tinggi daripada alamat file [index.php].

Berdasarkan contoh di atas, untuk membuat sebuah relative path tergantung dari alamat file yang sedang digunakan.

Absolute path

Absoute path adalah alamat file yang dimulai dengan document root. Dinamakan absolute karena alamat file yang di-include sudah pasti dan tidak tergantung dari alamat file yang meng-include.

Di dalam sebuah server terdapat beberapa buah directory yang digunakan untuk berbagai macam keperluan. Salah satu dari directory tersebut adalah document root. Document root adalah directory di dalam server yang berguna untuk menyimpan website. Document root memiliki beberapa nama lain, diantaranya yaitu: Start directory, Home directory, Web publishing directory atau Remote root.

Setiap server memiliki document root yang berbeda. Berikut ini adalah contoh salah satu document root:

/var/www/mydomain.com/

Pada contoh berikut ini kita menggunakan contoh yang sama seperti contoh relative path sebelumnya. Bedanya adalah code include pada file [index.php] ditulis menggunakan absolute path:

<php
include ("/products/a.php");

Pada contoh /products/a.php, character slash / pada bagian awal menandakan bahwa alamat file tersebut adalah absolute path.

Perbedaan absolute path dan relative path

Absolute path tergantung pada document root sedangkan relative path tergantung dari file yang sedang dibuka.

Perhatikan absolute path berikut ini:

/products/a.php

Alamat file di atas selalu tergantung pada document root (/var/www/mydomain.com/). Artinya adalah jika kita memiliki alamat file seperti di atas maka alamat file tersebut akan selalu sama artinya dengan: /var/www/mydomain.com/products/a.php.

Perhatikan relative path berikut ini:

products/a.php

Relative path di atas selalu tergantung pada alamat file yang sedang digunakan.

Jika alamat file yang sedang digunakan adalah: /var/www/mydomain.com/ dan kita menggunakan code include dengan relative path seperti ini: products/a.php maka relative path tersebut akan sama artinya dengan /var/www/mydomain.com/products/a.php.

Sedangkan jika alamat file yang sedang digunakan adalah: /var/www/mydomain.com/some/path/ dan kita menggunakan code include dengan relative path yang sama, yaitu: products/a.php maka relative path tersebut akan sama artinya dengan: http://mydomain.com/some/path/products/a.php.

Menghindari error

Ada error yang mungkin muncul akibat penggunaan absolute path dan relative path dalam beberapa kasus seperti dibawah ini:

Contoh 1,

Ada tiga buah file, yaitu [a.php], [b.php] dan [c.php] yang masing-masing berada di directory yang berbeda.

File [a.php] menggunakan code include dengan relative path untuk memasukkan file [b.php] ke dalam file [a.php] dan file [b.php] menggunakan code include dengan relative path untuk memasukkan file [c.php] ke dalam file [b.php]. Ada error yang biasa terjadi karena file [c.php] tidak ditemukan.

Code include pada file [b.php] normalnya memasukkan fila [c.php] ke dalam file [b.php] tergantung dari posisi file [b.php]. Tetapi setelah isi dari file [b.php] dimasukkkan ke dalam file [a.php] maka code include pada file [b.php] tersebut memasukkan file [c.php] ke dalam file [b.php] tergantung dari posisi file [a.php].

Solusi dari error di atas adalah gunakan absolute path.

Contoh 2,

Kamu mengembangkan sebuah aplikasi yang bisa di instal di manapun.

Dalam aplikasi tersebut ada file menu yang menggunakan code incude dengan absolute path untuk memasukkan beberapa file yang setiap filenya berada dalam directory yang berbeda.

Ada error yang bisa terjadi jika aplikasi tersebut di-instal pada subdirectory atau aplikasi tersebut tidak di-instal pada document root.

Solusi dari error di atas adalah gunakan relative path.

Contoh 3,

File menu menggunakan code incude dengan relative path untuk memasukkan beberapa file yang setiap filenya berada dalam directory yang berbeda. Ada error yang bisa terjadi jika file menu tersebut digunakan oleh beberapa file lain yang setiap filenya juga berbeda directory.

Solusi dari error di atas: hindari memasukkan file menu ke dalam file yang tidak berada di dalam document root.

Saran

Jika kamu menggunakan code include untuk memasukkan file yang berada di directory yang sama dengan file yang sedang digunakan maka gunakanlah hanya nama file tersebut.

Code superglobal $_SERVER["DOCUMENT_ROOT"] bisa digunakan untuk menghasilkan document root dan bisa dikombinasikan dengan absolute path. Contoh:

include($_SERVER["DOCUMENT_ROOT"] . "/dir/script_name.php");

Code dirname(__FILE__) juga bisa digunakan sebagai relative path. Kombinasi dirname() function dan __FILE__ seperti ini: dirname(__FILE__) akan menghasilkan alamat directory dari file yang sedang digunakan.

Code dirname() function berguna untuk menghasilkan alamat directory dari file yang diproses. Contoh, jika file [abc.txt] memiliki alamat file: [/tmp/abc.txt] maka dirname() function akan menghasilkan: [/tmp].

Code __FILE__ adalah sebuah constant yang berguna untuk menghasilkan file path sebuah file yang sedang digunakan termasuk nama file tersebut. Contoh, jika file yang sedang digunakan adalah [index.php] dan file tersebut tersimpan di dalam: [/var/www/html/] maka __FILE__ akan menghasilkan: [/var/www/html/index.php].

Contoh, jika __FILE__ menghasilkan [/var/www/html/index.php] maka code dirname(__FILE__) akan menghasilkan [/var/www/html].

Contoh, pada file [a.php] yang berada di dalam: [/root/dirB/dirc/] digunakan code include untuk memasukkan isi dari file [header.php] yang berada di dalam: [/root/dirA/design/] ke dalam file [a.php].

Berikut ini adalah code include di dalam file [a.php] yang menggunakan code dirname(__FILE__):

include dirname(__FILE__) . "/../../dirA/design/header.php";

Selain code dirname(__FILE__), code constant __DIR__ juga memiliki arti yang sama dengan dirname(__FILE__).

Menggunakan code $_SERVER["DOCUMENT_ROOT"] lebih dianjurkan daripada menggunakan code dirname(__FILE__) karena file path yang digunakan tidak tergantung pada file yang sedang digunakan namun tergantung pada document root.

One Response to “include dan require PHP”

  1. kaka says:

    mantap gan, terima kasih banyak gan atas penjelasannya. enak di baca dan dimengerti

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>