Sveiki, šis straipsniukas skirtas labiau pradedantiems php 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 require() nuo include()?
Abi šios funkcijos skirtos įtraukti failą į vykdomą failą. Tarkim, jūs norite faile index.php panaudoti constants.php 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 include():
// 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.php faile, užskaitomos ir index.php.
Lygiai taip pat galima panaudoti ir require vietoj include. Tad koks skirtumas?
Kad aiškiau būtų iškarto eikime prie pavyzdžio. Pataisome ankstesnį sukurtą index.php į šį 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.php, jog jo index.php nerastų. Gausime maždaug tokį rezultatą:
Warning: include(constants.php) [function.include]: failed to open stream: No such file or directory in /kelias/iki/index.php on line 2
Warning: include() [function.include]: Failed opening ‘constants.php‘ for inclusion (include_path=’.:’) in /kelias/iki/index.php on line 2
nera kazinko:(
nera belenko:(
Dabar vietoje include, panaudokime require:
// 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: require(constants.php) [function.require]: failed to open stream: No such file or directory in /kelias/iki/index.php on line 2
Fatal error: require() [function.require]: Failed opening required ‘constants.php‘ (include_path=’.:’) in /kelias/iki/index.php on line 2
Skirtumą pastebėjote?
Taip, jeigu naudojate include ir jūsų įterpiamas failas nerandamas, rodomos klaidos (žinoma, jeigu yra įjungtas klaidų rodymas) ir skriptas vykdomas toliau. Jeigu naudojate require, 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 include, require 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 include 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.
2007-03-29 | 10:34
na su konstantų tikrinimais nėra labai vykęs pavyzdys,
2007-03-29 | 11:02
yeah, tačiau tai buvo pirma šovusi mintis, iš esmės tai galima pritaikyti bet kam… kintamiesiems, funkcijoms, klasėms and ir t.t.
2007-03-31 | 10:23
[…] 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() […]
2007-08-15 | 15:12
[…] 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) […]