Imaginarni odjeljak php. Uključivanje datoteka u PHP pomoću uključi i zahtijevaj. Korištenje include _once i require _once

03.04.2021 Sigurnost

Članak koji ispituje HTML element odjeljka iz kategorije odjeljka.

Namjena elementa odjeljka

Element section koristi se za stvaranje odjeljka u dokumentu koji zajedno grupira neki tematski sadržaj. Za svaki odjeljak u dokumentu treba navesti njegov naziv (temu). To se obično radi pomoću naslova (elementi h1 - h6).

Naslov odjeljka

Sadržaj odjeljka...

Elementi sekcije obično se koriste u sljedećim slučajevima:

  • za označavanje dijelova unutar odjeljka. Na primjer, za označavanje poglavlja u članku, kartica u dijaloškom okviru, odjeljaka u disertaciji itd.
  • grupirati nekoliko odjeljaka u jednu tematsku skupinu. Na primjer, za grupiranje najnovije vijesti na web stranici, komentari na članak i sl.

Stoga bi se element odjeljka trebao koristiti samo za neki sadržaj ako ima naslov i dio je nečeg drugog.

Korištenje elementa odjeljka

Na primjer, razmotrite fragment koda stranice koji sadrži članak s komentarima. Svaki od komentara koje je korisnik ostavio na stranici sadrži potpuni sadržaj i stoga se može smatrati elementom članka. Ali, u isto vrijeme, svi komentari predstavljaju određenu tematsku skupinu, te se stoga mogu smjestiti u element rubrike, tj. ovaj element grupirat će sve te komentare na stranici zajedno.

Naslov članka

Komentari

Naslov komentara

Tekst komentara...

Naslov komentara

Tekst komentara...

Naslov članka Komentari Naslov komentara Naslov komentara

Na primjer, razmislite o korištenju elemenata odjeljka za stvaranje odjeljaka unutar elementa članka:

Naslov knjige

Prvo poglavlje

Drugo poglavlje

Treće poglavlje

Dodatak A

Dodatak B

Gornji primjer će imati sljedeći pregled:

Naslov knjige Prvo poglavlje Drugo poglavlje Treće poglavlje Dodatak A Dodatak B

Ograničenja pri korištenju elementa odjeljka

Element section u HTML 5 nije univerzalni element za grupiranje sadržaja, tj. ne bi se trebao koristiti za omatanje sadržaja koji vam se sviđa. Njegova glavna svrha je dodati semantiku dokumentu i stvoriti njegovu strukturu (skicu).

Kada autor treba grupirati sadržaj samo da bi ga stilizirao ili njime manipulirao u JavaScriptu, element div je njihov najbolji izbor. Element div, za razliku od elementa section, ne dodaje semantiku dokumentu i ne sudjeluje u kreiranju njegove strukture (outline).

Razlika između elemenata odjeljka i članka

Elementi odjeljka i članka, iako na prvi pogled izgledaju vrlo slični, imaju različita semantička značenja. Element article namijenjen je grupiranju sadržaja koji je potpun, samostalan i koji se može vidjeti odvojeno od ostatka sadržaja stranice. Element section ima drugačije semantičko značenje; namijenjen je grupiranju sadržaja koji je dio nečeg drugog.

Ali kako autor zna kakav je neki sadržaj na stranici? Pogledajmo ovo na primjeru iz fragmenta članka. Fragment je dio članka i stoga zahtijeva element odjeljka za grupiranje njegovog sadržaja. Ali taj isti fragment, već ostavljen kao komentar, predstavljat će nešto cjelovito, cjelovito. Stoga, u ovom kontekstu, možete koristiti element article da biste ga grupirali. Ali, naravno, može se tvrditi i obrnuto. Stoga, koji element koristiti za grupiranje sadržaja ovisi u većini slučajeva o vašem subjektivnom mišljenju kao autora. Ali najvažnije u ovom pristupu je zadržati odabranu poziciju. Dakle, što je autor dosljedniji u stvaranju strukture, to će više značenja moći unijeti u nju.

Samostalnom izradom web stranica (bez korištenja frameworka, CMS-a i ostalih fancy stvari koje olakšavaju život web programerima) suočavamo se s problemom izmjena na web stranici kada ima puno stranica.

Kako bismo bili sigurni da ne moramo mijenjati identične dijelove stranice u svakoj od datoteka stranice, možemo koristiti prikladne PHP upute, koje nam daju mogućnost uključivanja datoteka s potrebnim kodom na sve stranice koristeći doslovno jednu liniju koda. Zatim, promjenom sadržaja povezane datoteke, mijenjamo kod na svim stranicama stranice. Zgodno kako god gledali.

Pogledajmo sada detaljnije načine povezivanja datoteka:

Korištenje uključiti i zahtijevati

Nećete moći otkriti temeljnu razliku između ove dvije upute, čak i ako pokušate, ali postoje neke nijanse:

Ako se dogodi pogreška tijekom izvršavanja naredbe zahtijeva, parser će dobiti odgovor fatalne pogreške i izvršenje koda stranice će se zaustaviti, dok će uključiti samo izdati upozorenje i izvršavanje datoteke će se nastaviti (datoteka jednostavno neće biti uključena ).

Pogledajmo jednostavan primjer kako bismo bolje razumjeli temu.

Imamo našu mini stranicu u kojoj su zaglavlje i podnožje iste na svim stranicama, ali se tijelo dokumenta mijenja.

Kreiramo datoteke header.php i footer.php u koje smjestimo kod koji će biti isti na svim stranicama, a u datotekama index.php i newpage.php spojit ćemo statičke dijelove. Kao rezultat dobivamo:

Sadržaj zaglavlja.php

< header> < nav> < a href= "newpage1.php" title= "stavka izbornika" >stavka izbornika < a href= "newpage2.php" title= "stavka izbornika" >stavka izbornika < a href= "newpage3.php" title= "stavka izbornika" >stavka izbornika

Sadržaj podnožja.php

< footer> < p>Izrađeno kod nas

Sadržaj ostalih stranica stranice

Minisite

Puno, puno korisnih informacija



Kao rezultat učitavanja naše stranice dobivamo sljedeću sliku:

Kao što vidimo, sve radi odlično.

Imajte na umu da smo pokrenuli primjer na lokalnom Denwer poslužitelju, jer PHP zahtijeva poslužitelj za njegovu podršku. Ako izradite web mjesto u jednostavnoj mapi na računalu, ništa neće funkcionirati.

U razmatranom primjeru upotrijebili smo zahtjev za povezivanje zaglavlja i uključivanje podnožja. Što ćete koristiti na svojim stranicama ovisi o vama. Kao što je već spomenuto, nema velike razlike između njih. Osim što se taj zahtjev smatra malo strožom uputom.

Zapravo linija jednostavno kopira cijeli sadržaj datoteke, putanju do koje navedemo, u dokument u kojem se nalazi.

Korištenje include _once i require _once

Prilikom rada na web stranici mogu se pojaviti problemi zbog činjenice da je isti dio koda uključen u jednu datoteku više puta.

Pretpostavimo da se to dogodilo jer je nekoliko ljudi radilo na stranici, a kada su se kodovi spojili, dogodilo se nešto ovako...

Kako bi eliminirali mogućnost takvih problema, programeri često koriste naredbe include _once i require _once. Njihovo načelo rada potpuno je isto kao uključivanje sa zahtjevom, ali ako je datoteka u takvoj uputi već bila povezana s našom, tada se ponovno povezivanje neće dogoditi.

Nedostaci ove metode uključuju činjenicu da je sporija i računalno intenzivnija nego što su je zahtijevale njezine prethodnice, jer postaje potrebno zapamtiti sve uključene datoteke i usporediti ih kako bi se izbjeglo dupliciranje koda.

Na bilješku

  • Da bismo lakše razlikovali datoteke stranice web-mjesta i datoteke njihovih fragmenata koje uključujemo u njih, obično uključene datoteke imenu dodaju česticu inc. Uzimajući u obzir ovaj pristup u našem primjeru, dobili bismo datoteku header.inc.php i tako dalje iz datoteke header.php. Ovaj pristup može uvelike pojednostaviti razumijevanje strukture stranice u budućnosti.
  • Kod iz datoteke koju uključujemo nasljeđuje opseg retka u koji je uključen. Dakle, radi se samo o tome da će unutar stranice imati globalno područje, a unutar funkcije imat će lokalno područje.
  • Možemo koristiti uključivanje sa zahtjevom gdje god želimo. Čak i unutar scenarija.
Sadržaj dokumenta

1. funkcija config_load

Sintaksa:
(config_load file="naziv datoteke" )

Ova se funkcija koristi za učitavanje varijabli iz konfiguracijskih datoteka u predložak. Osim naziva preuzete datoteke, ova funkcija može imati nekoliko dodatnih parametara. Na primjer, parametar odjeljka, koji navodi naziv odjeljka za učitavanje. Više informacija o ovim i drugim parametrima možete pronaći u Smarty dokumentaciji.

Primjer:
(config_load file="task.conf")

2. Funkcija snimanja

Sintaksa:

(ime snimanja="naziv_bloka"
dodijeliti="naziv_varijable") ...
(/uhvatiti)

Ova je funkcija dizajnirana za prikupljanje izlaza predloška u varijablu umjesto ispisa na zaslon.

Sve između (capture name="varname") i (/capture) bit će zapisano u varijablu koja se zove varname. Sadržaj snimljen na ovaj način može se koristiti u predlošku putem posebne varijable $smarty.capture.varname, gdje je varname vrijednost proslijeđena atributu name funkcije snimanja. Ako naziv varijable nije naveden, koristit će se zadani naziv.

Drugi parametar assign navodi naziv varijable kojoj će se dodijeliti snimljena izlazna vrijednost. Ovaj parametar, kao i naziv, nije obavezan.

3. Funkcija odjeljka

Sintaksa:

(naziv odjeljka="naziv_odjeljka"
petlja="varijabla_za_izračunavanje_broja_iteracija"
[,start="indeks_početnog_položaja"]
[, step="korak"] [,max="maksimum_iteracija"]
[,show="show_section"] )...
(/odjeljak)

Sekcija je petlja za obilaženje elemenata niza. Potrebni parametri su name, koji postavlja naziv odjeljka, i petlja, koja je varijabla koja određuje broj ponavljanja petlje.

Tipično, petlja je varijabla niza, a broj ponavljanja odjeljka jednak je broju elemenata niza. Za prikaz varijable unutar petlje, trebate navesti naziv odjeljka u uglatim zagradama iza naziva varijable.

(naziv odjeljka=art loop=$title)

Naslov: ($title)

(/odjeljak)

Primjer 15.8. Petlja za pomicanje elemenata niza

4. foreach funkcija

Sintaksa:

(foreach from="naziv_niza"
stavka="trenutni_naziv_stavke")
...(/za svakoga)

Osim toga, možete koristiti dodatne atribute ključ - naziv ključa za trenutni element niza i naziv - naziv petlje, s kojima možete pristupiti njegovim svojstvima. Potrebni su atributi from i item.

foreach petlje su alternativa section petljama. Funkcija foreach radi vrlo slično petlji foreach u PHP-u.
(foreach from=$articles item=art)
Naslov: ($art)

(/za svakoga)

Primjer 15.9. foreach petlja

foreach petlje imaju svoja svojstva. Može im se pristupiti ovako: ($smarty.foreach.foreachname.varname) gdje je foreachname ime petlje dano njenim parametrom name, a varname je ime svojstva.

5. If, elseif, else iskaz

Sintaksa:

(if izraz) akcijski_blok
(elseif izraz1) akcijski_blok1
(drugo) action_block2
(/ako)

Rad operatora je gotovo sličan operatoru if...elseif...else u PHP-u.

Sljedeći operatori usporedbe mogu se koristiti u izrazima: eq, ne, neq, gt, lt, lte, le, gte, ge, is even, is odd, is not even, is not odd, not, mod, div by, even po, nepar po, ==, !=, >,<, <=, >=. Svaka od njih mora biti odvojena od okolnih vrijednosti razmacima. Možete koristiti zagrade u izrazima i pozivati ​​PHP funkcije.

(ako $name eq “Vasya”)
Dobro došao, Vasya.
(elseif $name eq “Petya”)
Dobrodošao, Petya.
(drugo)
Dobrodošli. A tko si ti?
(/ako)

Primjer 15.10. Operatori if, elseif, else

(* ovaj primjer neće raditi jer nema razmaka oko operatora usporedbe *)
(ako $name=="Vasya" || $name=="Petya")
...
(/ako)
Primjer 15.11. Neradni primjer

). Svaka oznaka (odjeljak) mora imati par (/odjeljak). Obavezni parametri su Ime I petlja. Naziv ciklusa (sekcije) može biti bilo koji koji se sastoji od slova, brojeva i podvlaka. Ciklusi (odjeljak) mogu biti ugniježđeni i nazivi ugniježđenih odjeljaka moraju biti jedinstveni jedni za druge. Varijabilna petlja(obično niz vrijednosti) određuje broj ponavljanja petlje. Kada ispisujete varijable unutar odjeljka, naziv odjeljka mora biti naveden pored naziva varijable unutar uglatih zagrada. (sectionelse) se izvršava ako je parametar petlja ne sadrži vrijednosti.

Naziv atributa Tip Potreban Zadano Opis
Ime niz Da n/a Naziv odjeljka
petlja mješoviti Da n/a Vrijednost koja određuje broj ponavljanja petlje.
početak cijeli broj Ne 0 Indeks pozicije na kojoj će započeti petlja. Ako je vrijednost negativna, tada se početna pozicija računa od kraja niza. Na primjer, ako varijabla petlje ima 7 elemenata, a vrijednost početnog atributa je -2, tada će početni indeks biti 5. Nevažeće vrijednosti (vrijednosti izvan niza) automatski se skraćuju na najbližu valjanu vrijednost.
korak cijeli broj Ne 1 Vrijednost koraka koja se koristi za prelazak niza. Na primjer, korak=2 označava obilazak niza elementima 0,2,4... Ako je korak negativan, tada će niz biti obiđen u suprotnom smjeru.
max cijeli broj Ne 1 Maksimalan broj ponavljanja petlje.
pokazati Booleov Ne pravi Pokazuje treba li prikazati ovaj odjeljak ili ne

Bilješka

Od Smarty verzije 1.5.0, sintaksa varijable svojstva sesije promijenjena je iz (%sectionname.varname%) u ($smarty.section.sectionname.varname). Stara sintaksa još uvijek je podržana, ali vidjet ćete samo primjere nove sintakse.

index se koristi za prikaz trenutnog indeksa niza, počevši od nule (ili atributa start ako je naveden) i povećavajući se za jedan (ili vrijednosti atributa koraka ako je naveden).

Tehnička napomena

Ako atributi koraka i početka nisu navedeni, tada je indeks isti kao atribut odjeljka iteracije, osim što počinje od 0, a ne od 1.

iteracija se koristi za prikaz trenutnog broja iteracije petlje.

Bilješka

Ova je vrijednost neovisna o svojstvima start, step i max, za razliku od svojstva indeksa. Također, iteracije počinju od jedan, a ne od nule kao kod indeksa. rownum je sinonim za svojstvo iteracije, rade isto.

Primjer 7.38. svojstvo (odjeljak) ponavljanje

dodijeli("custid",$id); ?> (section name=cu loop=$custid start=5 step=2) iteration=($smarty.section.cu.iteration) index=($smarty.section.cu.index) id=($custid)
(/odjeljak)

Rezultat pokretanja ovog primjera:

Iteracija=1 indeks=5 id=3005
iteracija=2 indeks=7 id=3007
iteracija=3 indeks=9 id=3009
iteracija=4 indeks=11 id=3011
iteracija=5 indeks=13 id=3013
iteracija=6 indeks=15 id=3015

Ovaj primjer koristi svojstvo iteracije za ispis zaglavlja tablice svakih pet redaka (koristeći (if) s mod operatorom).

(section name=co loop=$contacts) (ako je $smarty.section.co.iteration % 5 == 1) (/ako) (/odjeljak)
Ime>DomĆelijaE-mail
pogled ($contacts.name) ($contacts.home) ($contacts.cell) ($contacts.email)