Add to Google Reader or Homepage Prihlásiť sa k odberu RSS

Rozdiel medzi funkciami include a require

Rozdiel medzi PHP funkciami include a require je mnohým začiatočníkom zväčša nejasný. S touto banálnou otázkou som sa viackrát stretol aj na pracovných pohovoroch a bol som prekvapený, že aj pokročilí kodéri, snažiaci sa o relatívne zodpovednú pracovnú pozíciu nevedia správne odpovedať. Pritom rozdiel vo funkčnosti vyplýva už priamo z názvu oboch funkcií.

REQUIRE a REQUIRE_ONCE
Require je funkcia, ktorá VYŽADUJE nalinkovaný súbor a pokiaľ tento súbor nebude nájdený, beh skriptu sa UKONČÍ chybovou hláškou. Rozdiel medzi require a require_once by mal byť opäť jasný už z názvu. Require_once nalinkuje súbor iba raz a opätovne sa už o to nepokúša, aj keď je táto funkcia volaná povedzme v cykle s desiatimi opakovaniami.

INCLUDE a INCLUDE_ONCE
Include narozdiel od Require nalinkovaný súbor NEVYŽADUJE. To znamená, že pokiaľ tento súbor z nejakého dôvodou nebude existovať, vypíše sa síce chybová hláška, že funkcia include nevedela nájsť daný súbor, ale beh skriptu POKRAČUJE ďalej.

<?
require dirname(__FILE__).'/subor.php';
// pokiaľ súbor neexistuje, beh skriptu sa ukončí chybovou hláškou.
 
include dirname(__FILE__).'/subor.php';
// pokiaľ súbor neexistuje, vypíše sa chybové hlásenie, ale beh skriptu pokračuje ďalej.
?>

POUŽITIE
Správne výber medzi použitím include a require je dôležitý z hľadiska bezpečnosti aplikácie. Prostredníctvom funkcie require by mali byť nalinkované súbory, ktoré sú NEVYHNUTNÉ pre správny a bezpečný chod. Teda napríklad nejaké triedy zabezpečujúce autentifikáciu uživateľa, pripojenie k databáze a pod.
Naopak, include je vhodné použiť pri takých súboroch, ktoré nepredstavujú žiadne bezpečnostné riziko, ako je napríklad includnutie súboru s anketou a pod.
Z praktického hľadiska by však malo byť jedno, či použijete include alebo require, pretože v každom prípade by nalinkovaný súbor MAL existovať.

Tomáš Mašek

Naspäť naspäť Pridať komentár k článku prispieť do diskusie [2]
RSS