Načrtovanje in razvoj spletnih aplikacij

Vključevanje zunanjih datotek v PHP z ukazom REQUIRE

Ukaza require in require_once

PHP omogoča vključevanje zunanjih datotek tudi na obvezen način. Za to uporabljamo ukaza require in require_once. Oba vključita datoteko in izvedeta njeno vsebino na mestu, kjer sta zapisana.

Tak način vključevanja uporabljamo predvsem takrat, ko program brez zunanje datoteke ne more pravilno delovati, na primer pri konfiguraciji, skupnih funkcijah, razredih ali povezavi z bazo podatkov.

Pomni: Ukaza require in require_once uporabljamo takrat, ko je vključena datoteka nujna za pravilno delovanje programa.

Osnovna pravila

  • require vključi datoteko in jo izvede na mestu vključitve.
  • require_once deluje enako, vendar isto datoteko v istem izvajanju skripte vključi samo enkrat.
  • Če datoteke ni mogoče vključiti, se pri ukazu require izvajanje skripte ustavi.
  • Za obvezne datoteke uporabljamo require ali require_once, za manj pomembne dele strani pa običajno include.
  • Pri vključevanju moramo uporabljati pravilne in pregledne poti do datotek.

Pozor: Napačna pot do datoteke ali manjkajoča datoteka pri ukazu require povzroči prekinitev izvajanja skripte.

Ukaz require

Ukaz require vključuje zunanjo datoteko na mestu, kjer je zapisan. Uporabimo ga takrat, ko je vsebina te datoteke za program obvezna.

Če datoteke ni mogoče najti ali vključiti, PHP sproži napako in izvajanje skripte se ustavi. Zato je require primeren za datoteke, brez katerih stran ali program ne more pravilno delovati.

Pomni: Ukaz require uporabimo za datoteke, ki jih program nujno potrebuje za delovanje.

Ukaz require_once

Ukaz require_once deluje podobno kot require, vendar prepreči, da bi bila ista datoteka v istem izvajanju skripte vključena večkrat.

To je posebej uporabno pri datotekah s funkcijami, razredi, konfiguracijo ali povezavo z bazo, kjer bi večkratna vključitev lahko povzročila napake, na primer ponovno definicijo funkcije ali razreda.

Pomni: Če datoteke ne smemo vključiti večkrat, uporabimo require_once.

Primerjava include, require in require_once

Lastnost include require require_once
Namen vključevanje manj pomembnih datotek vključevanje obveznih datotek vključevanje obveznih datotek samo enkrat
Obnašanje ob napaki skripta se praviloma nadaljuje skripta se ustavi skripta se ustavi
Večkratna vključitev možna možna preprečena
Tipični primeri meni, noga strani, manj bistveni deli konfiguracija, povezava z bazo funkcije, razredi, konfiguracija

Pomni: include uporabljamo za manj pomembne dele strani, require za obvezne datoteke, require_once pa takrat, ko mora biti datoteka vključena samo enkrat.

Kdaj uporabimo require

  • pri konfiguracijskih datotekah,
  • pri datotekah s skupnimi funkcijami,
  • pri datotekah za povezavo z bazo,
  • pri delih kode, brez katerih stran ne more pravilno delovati.

Pozor: Ukaz require ni primeren za nebistvene dele strani, ker ob manjkajoči datoteki ustavi izvajanje celotne skripte.

Primer zunanje datoteke z menijem

V praksi lahko zunanjo datoteko uporabimo za meni, glavo strani ali skupne funkcije. Tako enako vsebino zapisujemo samo enkrat, nato pa jo vključimo v več straneh.

<a href="php.php">PHP domov</a> |
<a href="zgledi-01-sintaksa.php">PHP zgledi</a> |
<a href="primeri-01-random.php">PHP primeri</a>

Koda strani, kjer meni vključimo kot zunanjo datoteko z ukazom require:

<?php require "meni.php"; ?>
<p>To je spletna stran, ki ima meni vstavljen kot zunanjo datoteko z ukazom <code>require</code>.</p>

Pomni: Če zunanjo datoteko spremenimo, se sprememba pokaže na vseh straneh, ki to datoteko vključujejo.

PHP Domov | PHP Zgledi | PHP Primeri

To je spletna stran, ki ima meni vstavljen kot zunanjo datoteko z ukazom require.

Kaj se zgodi, če datoteka manjka

Če pri ukazu require zunanja datoteka ne obstaja ali je ni mogoče vključiti, PHP sproži napako in izvajanje skripte se ustavi. To je bistvena razlika v primerjavi z ukazom include, pri katerem se program lahko nadaljuje.

Pozor: Kadar obstaja možnost, da datoteka ni nujna, je treba dobro premisliti, ali je require res prava izbira.

Obseg spremenljivk in vključene datoteke

Vključena datoteka se izvede v dosegu mesta, kjer je vključena. To pomeni, da lahko dostopa do spremenljivk, ki so na voljo na tem mestu v programu. Funkcije in razredi, definirani v vključeni datoteki, pa so po vključitvi na voljo v nadaljnji kodi.

Pozor: Pri vključevanju datotek je treba paziti na preglednost kode in na to, katere spremenljivke so na voljo na mestu vključitve.

Priporočila

  • Za obvezne datoteke uporabljamo require.
  • Za datoteke s funkcijami, razredi ali konfiguracijo pogosto uporabimo require_once.
  • Pri vključevanju uporabljamo jasne, pregledne in pravilne poti do datotek.
  • Pri vključevanju ne uporabljamo neposredno uporabniškega vnosa.
  • Skupno kodo shranjujemo v ločene datoteke, da je program krajši, preglednejši in lažje vzdrževan.

Pomni: Z ločevanjem skupne kode v zunanje datoteke izboljšamo preglednost programa in poenostavimo vzdrževanje.

Pozor: Neposredno vključevanje datotek na osnovi nepreverjenega uporabniškega vnosa lahko povzroči resne varnostne težave.

Pogoste napake

  • Za nebistvene dele strani se uporabi require, čeprav bi bil primernejši ukaz include.
  • Ista datoteka s funkcijami ali razredi se vključi večkrat, čeprav bi bilo smiselno uporabiti require_once.
  • Pot do datoteke je zapisana napačno, zato vključitev ne uspe.
  • Vključevanje datotek temelji na nepreverjenem uporabniškem vhodu.
  • Ni upoštevano, da se izvajanje skripte pri neuspešnem ukazu require ustavi.

Pozor: Napačna izbira ukaza za vključevanje lahko povzroči prekinitev izvajanja programa ali podvajanje že vključene kode.

Oddaljeno vključevanje

Oddaljeno vključevanje prek URL-naslovov je lahko varnostno tvegano in zahteva posebno previdnost. Tak način v običajnih primerih ni priporočljiv, saj lahko poveča možnost zlorab in oteži nadzor nad izvorom vključene kode.

Pozor: Oddaljeno vključevanje prek URL-naslovov v sodobni praksi praviloma ni priporočljivo.

Sklep

Ukaza require in require_once uporabljamo za vključevanje datotek, ki so za program obvezne. Glavna prednost takšnega pristopa je boljša preglednost kode, manj podvajanja in enostavnejše vzdrževanje. Pri delu pa moramo paziti na pravilne poti, ustrezno izbiro ukaza in varnost pri vključevanju datotek.