Sveiki, šis straipsniukas skirtas labiau pradedantiems programuotojams, daugelis manau turėtų žinoti kuo skiriasi šios dvi funkcijos. Tačiau gavau prašymą parašyti apie tai straipsnį, tad pasidalinsiu savo išmone.
Taigi, kuo skiriasi () nuo ()?

Abi šios funkcijos skirtos įtraukti failą į vykdomą failą. Tarkim, jūs norite faile index. panaudoti constants. failą, kuriame yra jums reikiamos konstantos. Tam kad, nereikėtų visų konstantų apibrėžimų kartoti visuose failuose, kuriuose jums jų reikia, paprasčiausiai galima naudoti vieną iš šių funkcijų.
Pavyzdukas su ():

// constants.php failas
<?php 
define("KAZINKAS", "nu");
define("BELENKAS", "kazkas");
?>
// index.php failas
<?php 
include('constants.php');
if (KAZINKAS == "nu") { 
echo "kazinkas"; 
}
if (BELENKAS == "kazkas") { 
echo "belenkas"; 
}
?>

Esmė, jog visos įvykdytos operacijos constants. faile, užskaitomos ir index..
Lygiai taip pat galima panaudoti ir vietoj . Tad koks skirtumas?
Kad aiškiau būtų iškarto eikime prie pavyzdžio. Pataisome ankstesnį sukurtą index. į šį kodą:

// index.php failas
<?php 
include('constants.php');
if (KAZINKAS == "nu") {
echo "kazinkas";
} else {
echo "nera kazinko:(";
}
if (BELENKAS == "kazkas") {
echo "belenkas";
} else { 
echo "nera belenko:(";
}
?>

Dabar pašalinkime iš serverio constants., jog jo index. nerastų. Gausime maždaug tokį rezultatą:

Warning: (constants.) [function.]: failed to open stream: No such file or directory in /kelias/iki/index. on line 2
Warning: () [function.]: Failed opening ‘constants.‘ for inclusion (include_path=’.:’) in /kelias/iki/index. on line 2
nera kazinko:(
nera belenko:(

Dabar vietoje , panaudokime :

// index.php failas
<?php 
require('constants.php');
if (KAZINKAS == "nu") {
echo "kazinkas";
} else {
echo "nera kazinko:(";
}
if (BELENKAS == "kazkas") {
echo "belenkas";
} else {
echo "nera belenko:(";
}
?>

Rezultatas:

Warning: (constants.) [function.]: failed to open stream: No such file or directory in /kelias/iki/index. on line 2
Fatal error: () [function.]: Failed opening required ‘constants.‘ (include_path=’.:’) in /kelias/iki/index. on line 2

Skirtumą pastebėjote?
Taip, jeigu naudojate ir jūsų įterpiamas failas nerandamas, rodomos klaidos (žinoma, jeigu yra įjungtas klaidų rodymas) ir skriptas vykdomas toliau. Jeigu naudojate , skriptas yra sustabdomas ir toliau jis nevykdomas.
‘Tip`sas’ apie require_once() ir include_once()
Šios abi funkcijos atlieką tą patį bei skiriasi lygiai tuo pačiu, kaip ir , turi vieną papildomą paskirtį.
Naudojant *_once() yra išvengiama to pačio failo įterpimo du kartus, kas gali sukelti jūsų skripte klaidas. Kartais būna tokių situacijų, jog vykdant kažkokias užduotis skriptas įterpia failą keletą kartų, tarkim naudojamas cikle. Jeigu norite, jog jūsų failas būtų įterpiamas tik vieną kartą paprasčiausiai naudokite include_once() arba require_once().

Jeigu turite klausimų ar pastabų, nebijokite ir komentuokite ;) Ir nepamirškite užsiprenumeruoti RSS čia.

Panašūs straipsniai


“Require() vs include()” komentarų: 4

  1. enc

    na su konstantų tikrinimais nėra labai vykęs pavyzdys,

  2. asterisk

    yeah, tačiau tai buvo pirma šovusi mintis, iš esmės tai galima pritaikyti bet kam… kintamiesiems, funkcijoms, klasėms and ir t.t.

  3. » Savaitgalio skaitiniai #20 Archyvas » Pixel.lt

    […] Sveiki, štai jau 20-asis savaitgalio skaitinys. Gavome nemažai komentarų apie juos, daugelis buvo teigiami atsiliepimai, tad šių skaitinių nežadame nutraukti. Šią savaitę buvo parašytas straipsniukas “Require() vs include()“. Skaitiniai: Greita prieiga prie Rails projektų 1 dalis ir 2 dalis. bazė - wifi - ralink Form field hints with CSS and JavaScript Ruining the User Experience Cross-Browser Scripting with importNode() […]

  4. » 10 PHP klausimų #1 (atsakymai) Archyvas » Pixel.lt

    […] 2. Kada naudosite require, o kada include funkcijas failų įterpimui į PHP scenarijų? Apie include ir require skirtumus jau buvo rašyta pixelyje. Laiko taupymo sumetimais pacituosiu: “Include - kuomet failas nėra svarbus, ir jeigu jo nebus - skriptas veiks toliau. Require, kai be failo skriptas neapsieis, tad jis turės būti nutrauktas.” (Asterisk) […]

Rašyti komentarą

Jūs privalote prisijungti jeigu norite rašyti komentarą.