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
requirevključi datoteko in jo izvede na mestu vključitve.require_oncedeluje enako, vendar isto datoteko v istem izvajanju skripte vključi samo enkrat.- Če datoteke ni mogoče vključiti, se pri ukazu
requireizvajanje skripte ustavi. - Za obvezne datoteke uporabljamo
requirealirequire_once, za manj pomembne dele strani pa običajnoinclude. - 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.
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 ukazinclude. - 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
requireustavi.
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.