PHP - Include i Require fajlovi


Uključivanje PHP datoteke u drugu PHP datoteku

Izraz include() i require() omogućavaju vam uključivanje koda koji se nalazi u drugoj PHP datoteci. Uključivanje datoteke daje isti rezultat kao kopiranje skripte iz druge datoteke i postavljanje na mjesto gdje se zove. Možete uštediti puno vremena i truda pomoću ovih izraza za uključivanje datoteka u vašu skriptu. Jednostavno spremite blok koda u posebnu datoteku i uključite ga gdje god želite koristeći naredbe include() i require(), umjesto da više puta ispisujete cijeli blok koda. Tipičan primjer je uključivanje zaglavlja, podnožja i datoteke menija na svim stranicama web sajta. Osnovna sintaksa naredbe include() i require() može se napisati kao:

include("putanja/do/fajla"); -ili- include "putanja/do/fajla";
require("putanja/do/fajla"); -ili- require "putanja/do/fajla";

Sljedeći primjer će vam pokazati kako da uključite uobičajena zaglavlja, podnožja i kodove menija koji su pohranjeni u zasebnim datotekama 'header.php', 'footer.php' i 'menu.php', na sve stranice vaše web lokacije. Korištenjem ove tehnike možete odjednom ažurirati sve stranice web sajta unošenjem promjena u samo jednu datoteku, što štedi mnogo vremena.

<!DOCTYPE html>
<html lang="en">
<head>
    <title>IT TUTORIJALI - PHP</title>
</head>
<body>
<?php include "header.php"; ?>
<?php include "menu.php"; ?>
    <h1>Dobrodošli na naš sajt!</h1>
    <p>Ovde možete pronaći mnogo korisnih informacija.</p>
<?php include "footer.php"; ?>
</body>
</html>


Razlika između include i require izjava

Možda razmišljate ako možemo uključiti datoteke pomoću naredbe include(), zašto onda trebamo require(). Izjava require() obično radi poput include(). Jedina razlika je u tome što će naredba include() generisati samo PHP upozorenje, ali omogućiti nastavak izvršavanja skripte ako se datoteka koja se uključuje ne može pronaći, dok će naredba require() generisati fatalnu grešku i zaustaviti izvršavanje skripte.

<?php require "my_variables.php"; ?>
<?php require "my_functions.php"; ?>
<!DOCTYPE html>
<html lang="en">
<head>
    <title><?php displayTitle($home_page); ?></title>
</head>
<body>
<?php include "header.php"; ?>
<?php include "menu.php"; ?>
    <h1>Dobrodošli na naš sajt!!</h1>
    <p>Ovde možete pronaći mnogo korisnih informacija.</p>
<?php include "footer.php"; ?>
</body>
</html>


Izjave include_once i require_once

Ako slučajno uključite istu datoteku (obično datoteke ili datoteke klasa) u svoj kod više puta koristeći naredbe uključivanja (include) ili zahtijeva (require), to može izazvati sukobe. Da bi spriječio ovu situaciju, PHP pruža izjave include_once i require_once. Ove se izjave ponašaju na isti način na koji uključuju i zahtijevaju izjave s jednim izuzetkom. Izjave include_once i require_once sadržavaće datoteku samo jednom, čak i ako se zatraži da je uključe drugi put, tj. ako je navedena datoteka već uključena u prethodnu izjavu, a datoteka nije ponovo uključena. Da bismo bolje razumjeli kako to funkcioniše, pogledajmo primjer. Pretpostavimo da imamo datoteku 'my_functions.php' sa sljedećim kodom:

<?php
function multiplySelf($var){
    $var *= $var; // pomnoži varijablu za sebe
    echo $var;
}
?>

Evo PHP skripte u koju smo uvrstili datoteku 'my_functions.php'.

<?php
// Uključujući datoteku (Including file)
require "my_functions.php";
// Pozivanje funkcije
multiplySelf(2); // Ispisuje: 4
echo "<br>";
 
// Uključujući datoteku još jednom
require "my_functions.php";
// Pozivanje funkcije
multiplySelf(5); // Ne postoji
?>

Kada pokrenete gornju skriptu, vidjećete poruku o grešci otprilike ovako: "Fatal error: Cannot redeclare multiplySelf()". To se događa zato što je 'my_functions.php' dva puta uključea, to znači da je funkcija multiplySelf() definisana dva puta, što je uzrokovalo da PHP zaustavi izvršavanje skripte i generiše fatalnu grešku. Sada prepišite gornji primjer sa require_once.

<?php
// Uključujući datoteku (Including file)
require_once "my_functions.php";
// Pozivanje funkcije
multiplySelf(2); // Ispisuje: 4
echo "<br>";
 
// Uključujući datoteku još jednom
require_once "my_functions.php";
// Pozivanje funkcije
multiplySelf(5); // Ispisuje: 25
?>
Pogledajmo kako koristiti primjer u praksi:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Uključivanje datoteke samo jednom u PHP</title>
</head>
<body>

<?php
// Uključujući datoteku (Including file)
require_once "my_functions.php";
// Pozivanje funkcije
multiplySelf(2); // Ispisuje: 4
echo "<br>";
 
// Uključujući datoteku još jednom
require_once "my_functions.php";
// Pozivanje funkcije
multiplySelf(5); // Ispisuje: 25
?>

</body>
</html>

Kao što vidite, korištenjem require_once umjesto require, skripta radi onako kako smo očekivali.