Php nõuavad, et operaator reageerib veale. PHP funktsioonid: nõuda(), nõuda_once(), include(), include_once(). Ühendus funktsiooni sees

PHP operaatorid: nõuda(), nõuda_once(), include_once()

Kuupäev: 2012-10-15

PHP funktsioonid: nõuda(), nõuda_once(), include(), include_once()

Viimases tunnis arutasime tööd üksikasjalikult. Tuletan meelde, et operaator sisaldama () PHP-s asendab ühe veebilehe sisu teise veebilehega. Kuid PHP-l on muid funktsioone, mis võimaldavad teil sarnast ülesannet rakendada. Eelkõige on need funktsioonid:

include_once()
nõua ()
Nõua_ükskord()

Konkreetse veebilehe sisu sisestamiseks piisab nende funktsioonide argumendina (sulgudes) soovitud faili tee määramisest. Näiteks nii:

include("fail.php") või nõuda("fail.php")

Kõigi nende funktsioonide ülesanne on sama: sisestage soovitud kood või tekst ühest failist teise faili. Kuid sellegipoolest erinevad need funktsioonid üksteisest. Selgitame välja.

Sufiks " _üks kord" võimaldab ühendada asendatava faili koodi teise failiga ainult üks kord, olenemata sellest, kui palju kõnesid tehakse. Selguse huvides vaatame lihtsat näidet. Viimases õppetükis saime aru, et operaatorit kasutades sisaldama (), saate saidi päise panna eraldi faili header.php, eeldame lihtsuse huvides, et paigutame sellesse faili saidi graafilise logo. Kirjutame veebilehel õigesse kohta (antud juhul saidi päise asemele) koodi Nimekiri 1.

Nimekiri 1.

Seejärel kuvatakse vastavalt ka saidi logo kaks korda, umbes nii:

Nõus, see ei näe eriti kena välja, eks? Selgub, et operaator sisaldama () tõmbab selle kaks korda kaustast välja plokid faili header.php ja asendab selle saidi päise asemel kaks korda.

Üldiselt võib kaasasolev fail sisaldada funktsioone, mis lähtefailile lisamisel võivad tekitada vigu ja teie veebilehte ei pruugita üldse laadida.

Suurtel saitidel on väga lihtne segadusse sattuda, kuhu ja millise faili lisasite ning kas saate seda uuesti lisada, ning see võib põhjustada tõrke. Sellepärast tulid nad välja eesliitega " _üks kord"funktsioonidele sisaldama Ja nõuda, mis manustab faili sisu teisele veebilehele ainult üks kord.

Mille poolest erineb include() nõudest()

Räägime nüüd funktsioonist sisaldama () erineb funktsioonist nõua (). Nende töös pole erinevusi. Mõlemad funktsioonid ühendavad ühe faili sisu teise. Kuid neil on erinevus ja see seisneb selles, kuidas nad reageerivad olukorrale, kui ühendatav fail pole paigas.

Läheme tagasi eelmise näite koodi juurde Nimekiri 1. Meil on järgmine kood:

Include("blokid/päis.php");

Proovime faili kustutada header.php, mille me tegelikult ühendame, näiteks fail on kahjustatud või kogemata põhjast kustutatud.

Värskendame testfaili ja näeme järgmist viga:

Nagu näete, kuvatakse teade, et kataloogis (kaustas) plokid faili ei leitud header.php, kuid programm käivitub endiselt ja ülejäänud saidi veebileht kuvatakse tavapäraselt.

Mis siis, kui kirjutame koodi ( Nimekiri 3), kasutades funktsiooni nõua ():

Nimekiri 3.

Require("blocks/header.php");

See meil on kuvatakse ainult üks veateade, ja programmi enam ei käivitata ja näete ainult seda sõnumit.

29 vastust

Samuti on olemas nõud ja include_once .

Nii et teie küsimus peaks olema...

  1. Millal peaksin kasutama nõu ja kaasama?
  2. Millal peaksin kasutama request_once vs request

Funktsioon request() on identne include()-ga, välja arvatud see, et see käsitleb vigu erinevalt. Kui ilmneb viga, genereerib funktsioon include() hoiatuse, kuid skript jätkab täitmist. Require() genereerib saatusliku vea ja skript peatub.

Käsk request_once () on identne nõudega (), välja arvatud see, et PHP kontrollib, kas fail on juba lisatud, ja kui on, siis ei lisa (require) seda uuesti.

Minu soovitus on 99,9% ajast lihtsalt kasutada request_once'i.

Nõua või kaasamine tähendab selle asemel, et teie koodi ei saa mujal uuesti kasutada, st skripte, mida te tegelikult sisestate teostada klassi või mõne funktsiooniteegi pakkumise asemel,

Kui vajate/kaasa arvatud paigas töötav kood, on see protseduurikood ja seda vajate õppida uut paradigmat. Sarnaselt objektorienteeritud programmeerimisele, funktsionaalsele programmeerimisele või funktsionaalsele programmeerimisele.

Kui teete juba OO-d või funktsionaalset programmeerimist, viibib faili include_once kasutamine enamasti viivitusega, kui leiate virust vigu. Soovite teada, et funktsioon do_cool_stuff() pole saadaval, kui lähete seda hiljem kutsuma või hetkel, kui eeldate, et see on saadaval, kas vajate raamatukogu? Üldiselt on parem teada juba ette, kui midagi, mida vajate ja mida oodata, pole saadaval, nii et kasutage lihtsalt funktsiooni request_once .

Teise võimalusena laadige kaasaegses OOP-is oma klassid automaatselt, kui neid kasutatakse.

Funktsioonide _once ja _once erinevus: ilma koodita lubatakse _once uuesti, samas kui funktsioonide _once puhul jälgib PHP kaasatud faile ja lubab selle ainult üks kord.

Erinevus nõudmise ja kaasamise vahel: kui vajalikku faili ei leita, genereerib PHP saatusliku vea, samas kui include annab ainult hoiatuse.

include() annab hoiatuse, kui see ei saa faili sisaldada, kuid ülejäänud skript käivitub.

request() viskab välja E_COMPILE_ERROR ja peatab skripti, kui see ei saa faili sisaldada.

Funktsioonid include_once() ja request_once() ei sisalda faili teist korda, kui see on juba lisatud.

Vaadake järgmisi dokumentatsiooni lehti:

Iga kord, kui kasutate funktsiooni request_once(), saate seda kasutada failis teise faili kaasamiseks, kui vajate faili, mille just praeguses failis määrasite. Siin näites on mul test1.php.

ja teises failis, mille nimetasin test2.php

kui vaatate m, nõuab faili test1 kaks korda, kuid fail sisaldab üks kord test1 ja teistkordsel helistamisel ignoreeritakse seda. Ja ilma peatumata kuvatakse väljund üks kord.

Kui kasutate "include_once()", saab seda kasutada failis teise faili kaasamiseks, kui vajate seda faili praeguses failis rohkem kui üks kord. Siin näites on mul fail nimega test3.php.

Ja teises failis, mille nimetasin test4.php

kuna vaatate m, sealhulgas faili test3 kaasab faili ühe korra, kuid peatab edasise täitmise.

Erinevus seisneb veas, mille käsud genereerivad. Nõudmise korral vajab see tegelikult faili, mida soovite kasutada, ja genereerib seega E_ERROR, kui seda ei leita.

request() on identne include()-ga, välja arvatud juhul, kui ebaõnnestumine toob kaasa fataalse veataseme E_ERROR .

include tekitab ebaõnnestumisel vea E_WARNING, mis on enam-vähem vaikne.

Kasutage seda siis, kui faili on vaja järelejäänud koodi käitamiseks ja soovite, et skript ebaõnnestuks, kuna fail pole saadaval.

Üks kord() :

Funktsiooni include_once() saab kasutada juhtudel, kui sama faili võidakse konkreetse skripti käitamise ajal kaasata ja hinnata rohkem kui üks kord, nii et antud juhul aitab see vältida selliseid probleeme nagu funktsiooni alistamine, muutuva väärtuse alistamine jne. d.

Sama kehtib muidugi ka request_once() kohta.

See küsimus esitati seitse aastat tagasi ja ükski vastus ei anna selles küsimuses praktilist abi. Kaasaegses PHP-programmeerimises kasutate automaatlaaduri (sageli helilooja automaatlaaduri) lubamiseks põhimõtteliselt ainult üks kord ja see laadib kõik teie klassid ja funktsioonid (funktsioonifailid tuleb selgelt lisada faili composer.json, et need oleksid kõigis teistes failides saadaval). Kui teie klass mingil põhjusel automaatlaadurist ei laadi, kasutate selle laadimiseks funktsiooni request_once.

Nendel päevadel peate ainult suure osa PHP-failist poolitama. See on põhimõtteliselt suure massiivi määratlus. Sellistel juhtudel kasutate ainult request_once .

"y"];

Kui fail, mida kavatsete kasutada, sisaldab midagi käivitatavat või deklareerib mõningaid muutujaid, peate peaaegu alati kasutama nõudmist, sest kui kasutate kuskil mujal, ei käivitu teie kood ja/või muutujad ei käivitu vaikselt, põhjustab vigu, mida on täiesti raske tuvastada.

Include ja include_once praktikat praktiliselt ei kasutata.

Klasside ja funktsioonide määratlused tuleks salvestada failidesse.

Laadimiseks kasutage request_once(). sõltuvused

Kasutage laadimiseks nõuet(). mallitaolisi faile.

Kasutage laadimiseks funktsiooni include_once(). valikulised sõltuvused(klassid, funktsioonid, konstandid).

Kasutage laadimiseks include(). valikulised mallitaolised failid.

nõutud põhjustab saatusliku vea (E_COMPILE_ERROR) ja peatab skripti.

sisse lülitada annab hoiatuse (E_WARNING) ja skript jätkub.

Operaator nõua_üks kord saab kasutada PHP-faili kaasamiseks teise, kui peate võib-olla kutsutud faili kaasama rohkem kui üks kord.

Kui a.php on PHP-skript, mis kutsub b.php-d funktsiooniga request_once() ja ei leia faili b.php, lõpetab a.php täitmise, põhjustades saatusliku vea.

sisaldama ()

See sisaldab määratud faili. See annab hoiatuse, kui ei leia faili ega käivita ülejäänud skripte

nõutud()

See sisaldab määratud faili. Kui faili ei leita, tekib saatuslik tõrge ja see lõpetab täitmise

See sisaldab määratud faili. fail on juba kaasatud, siis seda enam ei lisata. See annab hoiatuse, kui ei leia faili ega käivita ülejäänud skripte.

See sisaldab määratud faili. fail on juba kaasas, siis seda enam ei lisata. Kui faili ei leita, tekib saatuslik tõrge ja see lõpetab täitmise.

Identne kaasamise/nõutavaga, välja arvatud see, et PHP kontrollib, kas fail on juba lisatud, ja kui on, siis ära lisa seda (nõutav) uuesti.

PSR-0/PSR-4 automaatlaadurite ajastul võib avalduste kasutamine olla täiesti tarbetu, kui vajate vaid mõned funktsioonid/klassid oma koodile kättesaadavaks teha (muidugi peate faili alglaadimises ikkagi kasutama nõuet_once ja lisage mallid, kui kasutate endiselt mallimootorina PHP-d).

request() on identne include()-ga, välja arvatud juhul, kui ebaõnnestumine toob kaasa fataalse veataseme E_COMPILE_ERROR . Teisisõnu, see peatab skripti, samas kui include() annab ainult hoiatuse (E_WARNING), mis võimaldab skriptil jätkata.

Sama kehtib ka _once() valikute kohta.

Kasutasin funktsiooni järgmiselt:

Funktsioon doSomething() ( nõuda_once(xyz.php); .... )

Püsiväärtused fikseeriti failis xyz.php.

Pean kutsuma seda funktsiooni doSomething() teisest PHP skriptifailist.

Kuid ma jälgisin käitumist selle funktsiooni tsüklis kutsumisel, esimese iteratsiooni korral sai doSomething() konstantseid väärtusi failis xyz.php, kuid hiljem ei suutnud iga doSomething() iteratsioon saada konstantseid väärtusi, mis deklareeriti xyz-is. php .

Lahendasin oma probleemi, vahetades nõudja_once() asemele include() , värskendatud doSomething() kood näeb välja selline:

Funktsioon doSomething() ( include(xyz.php); .... )

Nüüd saab iga doSomething() iteratiivne kutse vastu failis xyz.php määratletud konstandid.

Millal peaksite kasutama nõuda või kaasama?

Funktsioonid Nõua ja kaasavad täidavad sama ülesannet, st kaasavad ja hindavad määratud faili, kuid erinevus nõua põhjustab saatusliku vea, kui määratud faili asukoht on kehtetu või mis tahes vea korral, samas kui include genereerib hoiatuse ja jätkab koodi täites.

Nii et saate kasutada nõutavat funktsiooni juhul, kui fail, mida proovite kaasata, on süsteemi süda ja sellel võib olla suur mõju ülejäänud koodile ning võiksite kasutada kaasamisfunktsiooni, kui fail, mida proovite lisada, on lihtne fail, mis sisaldab vähem olulist koodi.

Ja minu isiklik soovitus (vähem olulise koodi puhul) on kasutada koodis kõikjal selle arendamise ajal funktsiooni Nõua, et saaksite koodi siluda ja seejärel asendada kõik nõutavad funktsioonid funktsiooniga include enne selle tootmisse viimist, et kui jätate vahele kõik vead, see ei mõjuta lõppkasutajat ja ülejäänud kood käivitub õigesti...

Millal peaksite kasutama nõuet_üks või nõudma?

Peamine erinevus nõudmise ja nõue_once vahel on nõue_once, mis kontrollib, kas fail on kaasatud või mitte, kui see on juba kaasatud, siis see faili ei sisalda, samas kui funktsioon Nõu sisaldab faili, kas fail on kaasatud või mitte.

Seega, kui soovite koodijuppi ikka ja jälle lisada, kasutage funktsiooni request, samas kui soovite koodi lisada ainult üks kord, kasutage request_once.

Need on kõik viisid failide kaasamiseks.

Nõuda tähendab, et seda on vaja. Require_once tähendab, et seda nõutakse, kuid nõutakse ainult üks kord. Kaasa tähendab, et see sisaldab faili, kuid seda pole jätkamiseks vaja.

Nõua "failinimi" Require_once "failinimi" Kaasake "failinimi"

Samuti on funktsioon include_once, mis sisaldab faili üks kord.

Include_once "failinimi"

Ärge kasutage suuri tähti, kui ma oma telefoniga kirjutan.

Põhimõtteliselt, kui soovid valet teed, siis PHP annab fataalse vea ja kutsutakse välja shutdown funktsioon, kuid vale tee sisselülitamisel jätkab PHP täitmist, kuid kuvab lihtsalt hoiatuse, et faili pole olemas.

Ingliskeelsest sõnast nõutud ütleb PHP, et lehe või faili täitmine sõltub vajalikust failist.

Minu kogemuse kohaselt on see norm, mis nõuab olulisi faile, nagu konfiguratsioonifailid, andmebaasiklassid ja muud olulised utiliidid.

Iga veebilehe ja igasuguse keerukuse arendamisel tuleb eelkõige keskenduda koodi õigsusele. Näiteks kui loote kogu koodi arvukate failidega ühel lehel, põhjustab see segadust ja suuri ebamugavusi. Ja selleks peate failid kategooriatesse korraldama ja seejärel õigetes kohtades põhikoodiga ühendama. Seda meetodit võib nimetada kaasatud failideks. See on üsna lihtne nimi, kuid inimese jaoks, kes puutub selle teemaga esimest korda kokku, võib seda nii nimetada. Ja selleks, et saaksite kõik kaasatud failid ühte koodi koguda, peate rakendama eelmises artiklis kirjeldatut või kasutama juhiseid nõudma ja nõudma_üks kord mida selles tekstis kirjeldatakse.

Praktilised juhised nõudma ja nõudma_üks kord täidavad samu funktsioone nagu juhised include ja include_once, välja arvatud mõned punktid.

Nende juhiste süntaks on järgmine:

Require_once 'config.php'; - seadete fail
nõuda_once 'päis.php'; - saidi päis
nõuavad 'left.php'; - vasak külgriba
nõuavad 'content.php'; — saidi sisu
nõuavad 'jalus.php'; - saidi jalus

Ja erinevus seisneb selles. Koodi töötlemisel teisendab PHP esmalt skripti siseesitluseks, misjärel hakkab koodi rea haaval töötlema. Ja kui PHP leiab koodist faili, mille käsk sisaldab sisaldama, siis pärast faili laadimist lülitub see täielikult selle täitmisele, teisendab faili sisemiseks esituseks ja alles seejärel käivitab selle samm-sammult...

Siin on juhised nõuda töötab veidi teisiti. Tema abiga seotud fail tõlgitakse enne skripti täitmist ehk siis kogu koodi töötlemise hetkel on see fail juba tõlgitud!!! Ja siit järeldus – juhistega ühendatud failid nõuda- töötab kiiremini. Ja näiteks minu jaoks on see õpetus eelistatavam. Aga loomulikult on üks AGA! Kui brauser lehe laadib, võib Internet kokku jooksma ja kasutaja näeb ainult seda osa lehelt, mis on juba laaditud. Või kui esineb mingi töötlemistõrge, ei jätku töötlemine külmutatud failist kaugemale. Kuid seda juhtub veebisaidil harva, seega on see juhis siiski eelistatav.

Ma peaaegu unustasin. Juhised nõua_üks kord- täidab ka faili lisamise rolli üldisesse koodi ainult üks kord, nii et kordusi ei tekiks.

See on peaaegu kõik, mida peate teadma failide ühendamise kohta üldise koodi kirjutamise vooga. Sügavamad teadmised tulevad tavaliselt õppimise käigus ja olenevalt vajadustest, mida ma loomulikult ei oska ennustada. Täname tähelepanu eest ja vabandame nende teemade autori esitluse eest.

juuli 2019
Esmasp W kolmap Neljap P laup Päike
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

REKLAAM

    PHP-s lause include, php-s lause include_once, kaasatud failid. Lihtsa dünaamilise veebisaidi või täiustatud programmide väljatöötamisel on see võimatu

    Saidimootori struktuur, saidimootori koostis, saidi juhtpaneel, mallimootor. Eelmises artiklis kirjeldati seda

    Mis on veebisaidi mootor, kuidas teha veebisaidi mootorit, veebisaidi haldamise süsteem PHP-s. Et aru saada, mis see on