Bezgrēcīga sadaļa php. Failu iekļaušana PHP, izmantojot iekļaušanu un pieprasīšanu

Veidojot vietnes, kuras raksta pats (neizmantojot ietvarus, CMS un citas modernas lietas, kas atvieglo tīmekļa izstrādātāju dzīvi), mēs saskaramies ar problēmu rediģēt vietni, ja ir daudz lapu.

Lai mums nebūtu jāmaina vienas un tās pašas vietnes daļas katrā lapas failā, mēs varam izmantot ērtas PHP instrukcijas, kas ļauj visās lapās iekļaut failus ar nepieciešamo kodu ar burtiski vienu koda rindu. Pēc tam, mainot iekļautā faila saturu, mēs mainām kodu visās vietnes lapās. Ērti, lai arī kā izskatītos.

Tagad apskatīsim sīkāk, kā savienot failus:

Izmantojot iekļaut un pieprasīt

Jūs nevarēsit atrast būtisku atšķirību starp šiem diviem norādījumiem ar visu savu vēlmi, taču ir nianses:

Ja prasīšanas komandas izpildes laikā rodas kļūda, parsētājs saņems fatālu kļūdu atbildi un lapas koda izpilde tiks pārtraukta, savukārt iekļaušana tikai brīdinās un faila izpilde turpināsies (fails vienkārši netiks savienots).

Lai labāk izprastu tēmu, ņemsim vienkāršu piemēru.

Mums ir mūsu minizīts, kurā galvene un kājene visās lapās ir vienādas, un dokumenta pamatteksts tiek mainīts.

Mēs izveidojam failus header.php un footer.php, kuros ievietojam kodu, kas būs vienāds visās lapās, un failos index.php un newpage.php savienosim statiskās daļas. Rezultātā mēs iegūstam:

Header.php saturs

< header> < nav> < a href= "newpage1.php" title= "izvēlnes vienums" >izvēlnes vienums < a href= "newpage2.php" title= "izvēlnes vienums" >izvēlnes vienums < a href= "newpage3.php" title= "izvēlnes vienums" >izvēlnes vienums

Footer.php saturs

< footer> < p>Mūsu izgatavots

Citu vietnes lapu saturs

Minitārijs

Daudz noderīgas informācijas

Lapas ielādes rezultātā mēs iegūstam šādu attēlu:

Kā redzam, viss darbojas lieliski.

Es vēlos vērst jūsu uzmanību uz to, ka mēs izmantojām piemēru vietējā Denwer serverī, jo PHP darbībai ir nepieciešams serveris ar tā atbalstu. Ja izveidojat vietni vienkāršā datora mapē, nekas nedarbosies.

Iepriekš minētajā piemērā mēs izmantojām prasīto galveni un kājeni. Tas, ko izmantot savās vietnēs, ir atkarīgs no jums. Kā jau minēts, starp tām nav lielas atšķirības. Ja vien prasība netiek uzskatīta par nedaudz stingrāku paziņojumu.

Patiesībā līnija vienkārši kopē visu faila saturu, ceļu, uz kuru mēs norādām, dokumentā, kurā tas atrodas.

Izmantojot iekļaut _once un prasīt _once

Strādājot vietnē, var rasties problēmas, kas saistītas ar faktu, ka viena un tā pati koda daļa tiek atkārtoti iekļauta tajā pašā failā.

Pieņemsim, ka tas notika tāpēc, ka vietnē strādāja vairāki cilvēki, un, apvienojot kodus, iznāca šāds incidents ...

Izstrādātāji bieži izmanto paziņojumus include_once un need_once, lai novērstu šādu problēmu iespējamību. Darbības princips viņiem ir tieši tāds pats kā iekļaut ar prasīt, taču, ja šādā instrukcijā esošais fails jau ir pievienots mūsu, tad atkārtots savienojums nenotiks.

Šīs metodes trūkumi ietver to, ka tā darbojas lēnāk un daudz skaitļošanas ziņā intensīvāk, nekā to prasa priekšgājēji, jo ir nepieciešams atcerēties visus iekļautos failus un salīdzināt tos, lai izvairītos no koda dublēšanās.

Uz piezīmes

  • Lai būtu ērtāk atšķirt vietnes lapu failus un to fragmentu failus, kurus mēs tajos iekļaujam, parasti iekļautie faili nosaukumam pievieno inc daļiņu. Ņemot vērā šo pieeju mūsu piemērā, mēs iegūtu failu header.inc.php no faila header.php un tā tālāk. Šī pieeja nākotnē var atvieglot vietnes struktūras izpratni.
  • Kods no faila, kuru mēs savienojam, manto tās līnijas darbības jomu, kurā tas ir savienots. Tobish tikai lapas iekšpusē tam būs globāls tvērums, bet funkcijas iekšienē - vietējais.
  • Mēs varam izmantot iekļaut ar pieprasīt, kur vien vēlamies. Pat skriptu iekšpusē.
Dokumentu satura rādītājs

1. config_load funkcija

Sintakse:
(config_load file = "faila nosaukums")

Šo funkciju izmanto, lai ielādētu mainīgos no konfigurācijas failiem veidnē. Papildus ielādētā faila nosaukumam šai funkcijai var būt vairāki papildu parametri. Piemēram, sadaļas parametrs, kas norāda ielādējamās sadaļas nosaukumu. Plašāku informāciju par šiem un citiem parametriem var iegūt Smarty dokumentācijā.

Piemērs:
(config_load file = "task.conf")

2. Uzņemšanas funkcija

Sintakse:

(uztveršanas nosaukums = "bloka_nosaukums"
piešķirt = "mainīgais_nosaukums") ...
(/ uztveršana)

Šī funkcija ir paredzēta, lai veidnes izvadi apkopotu mainīgā, nevis parādītu ekrānā.

Viss, kas atrodas starp (uztveršanas nosaukums = "varname") un (/ capture), tiks rakstīts uz mainīgo ar nosaukumu varname. Šādi uzņemto saturu var izmantot veidnē, izmantojot īpašo mainīgo $ smarty.capture.varname, kur varname ir vērtība, kas tiek nodota uztveršanas funkcijas name atribūtam. Ja nav norādīts mainīgā nosaukums, tiks izmantots noklusējuma nosaukums.

Otrā parametra piešķiršana norāda mainīgā nosaukumu, kuram tiks piešķirta iegūtā izvades vērtība. Šis parametrs, tāpat kā nosaukums, nav obligāts.

3. Sadaļas funkcija

Sintakse:

(sadaļas nosaukums = "sadaļas_nosaukums"
cilpa = "variable_for_out_number_iterations"
[, start = "start_position_index"]
[, step = "step"] [, max = "maximum_iterations"]
[, show = "show_or_section"]) ...
(/ sadaļa)

Sadaļa Sekcija ir cilpa masīva elementu pārvietošanai. Nepieciešamie parametri ir nosaukums, ko izmanto, lai iestatītu sadaļas nosaukumu, un cilpa, kas ir mainīgais, kas nosaka ciklu atkārtojumu skaitu.

Parasti cilpa ir masīva tipa mainīgais, un sadaļu atkārtojumu skaits ir vienāds ar šī masīva elementu skaitu. Lai cilpā parādītu mainīgo, pēc mainīgā nosaukuma kvadrātiekavās jānorāda sadaļas nosaukums.

(sadaļas nosaukums = mākslas cilpa = $ nosaukums)

Nosaukums: ($ title)

(/ sadaļa)

Piemērs 15.8. Veiciet cilpu, lai atkārtotu masīva elementus

4. Sludinājuma funkcija

Sintakse:

(foreach from = "masīva_nosaukums"
item = "current_item_name")
... (/ katram)

Turklāt jūs varat izmantot papildu atribūtu atslēgu - masīva pašreizējā elementa atslēgas nosaukumu un nosaukumu - cilpas nosaukumu, ar kuru jūs varat piekļūt tā rekvizītiem. Ir nepieciešami atribūti no un vienums.

Foreach cilpas ir alternatīva sadaļu cilpām. Foreach funkcija ir ļoti līdzīga PHP foreach cilpai.
(foreach from = $ raksti vienums = māksla)
Nosaukums: ($ art)

(/ katram)

Piemērs 15.9. Foreach cilpa

Foreach cilpām ir savas īpašības. Jūs varat tiem piekļūt šādā veidā: ($ smarty.foreach.foreachname.varname), kur foreachname ir cilpas nosaukums, kas norādīts tā nosaukuma parametrā, un varname ir īpašuma nosaukums.

5. Operators if, elseif, else

Sintakse:

(ja izteiksme) action_block
(elseif izteiksme1) action_block1
(cits) action_block2
(/ ja)

Operatora darbība ir gandrīz tāda pati kā PHP, ja ... elseif ... cits operators.

Izteicienos var izmantot šādus salīdzināšanas operatorus: eq, ne, neq, gt, lt, lte, le, gte, ge, ir pāra, ir nepāra, nav pāra, nav nepāra, nav, mod, div līdz, pat pēc, nepāra, == ,! =,>,<, <=, >=. Katrs no tiem ir jāatdala no apkārtējām vērtībām ar atstarpēm. Izteiksmēs varat izmantot iekavas un izsaukt php funkcijas.

(ja $ name ekv. "Vasja")
Laipni lūdzam, Vasja.
(cits nosaukums $ ekv. "Petja")
Laipni lūdzam, Petija.
(citādi)
Laipni lūdzam. Kas tu esi?
(/ ja)

Piemērs 15.10. If, elseif, else apgalvojumi

( * šis piemērs nedarbosies, jo ap salīdzināšanas operatoriem nav atstarpju *)
(ja $ name == "Vasya" || $ name == "Petya")
...
(/ ja)
Piemērs 15.11. Salauzts piemērs

Raksts, kas pēta HTML sadaļas elementu no sadaļu kategorijas.

Sadaļas elementa mērķis

Sadaļas elementu izmanto, lai dokumentā izveidotu sadaļu, kurā tiek apkopots dažu tēmu saturs. Katrai dokumenta sadaļai jānorāda tās nosaukums (tēma). To parasti veic ar galvenēm (h1-h6 elementi).

Sadaļas virsraksts

Sadaļas saturs ...

Sadaļas elementus parasti izmanto šādās situācijās:

  • lai atzīmētu sadaļas sadaļas. Piemēram, lai atzīmētu nodaļas rakstā, cilnes dialoglodziņā, disertācijas sadaļas utt.
  • apvienot vairākas sadaļas vienā tematiskajā grupā. Piemēram, lai grupētu jaunākās ziņas vietnē, komentārus par rakstu utt.

Tādējādi sadaļas elements jāizmanto tikai kādam saturam, ja tam ir virsraksts un tas ir daļa no kaut kā cita.

Izmantojot sadaļas elementu

Piemēram, apsveriet lapas koda fragmentu, kurā ir raksts ar komentāriem. Katrs lietotāja lapā publicētais komentārs satur pilnīgu saturu, un tāpēc to var uzskatīt par raksta elementu. Bet tajā pašā laikā visi komentāri pārstāv noteiktu tematisko grupu, un tāpēc tos var ievietot sadaļas elementā, t.i. šis elements apvienos visus šos komentārus lapā.

Raksta nosaukums

Komentāri (1)

Komentāra galvene

Komentāra teksts ...

Komentāra galvene

Komentāra teksts ...

Raksta nosaukums Komentāri Komentārs Nosaukums Komentāra nosaukums

Piemēram, apsveriet iespēju izmantot sadaļu elementus, lai izveidotu sadaļas raksta elementā:

Grāmatas nosaukums

Pirmā nodaļa

Otrā nodaļa

Trešā nodaļa

Pielikums A

B pielikums

Iepriekš minētajā piemērā būs šāds izklāsts:

Grāmatas nosaukums Pirmā nodaļa Otrā nodaļa Trešā nodaļa Pielikums A Pielikums B

Ierobežojumi, izmantojot sekcijas elementu

Sadaļas elements HTML 5 nav vispārējs elements satura grupēšanai, t.i. to nedrīkst izmantot, lai iesaiņotu jums tīkamu saturu. Tās galvenais mērķis ir dokumentam pievienot semantiku un izveidot tā kontūru.

Ja autoram ir nepieciešams grupēt saturu tikai, lai veidotu vai manipulētu ar to JavaScript, labākā vieta ir viņam izmantot div elementu. Elements div, atšķirībā no sadaļas elementa, dokumentam nepievieno semantiku un nepiedalās tā kontūras (kontūras) izveidē.

Sadaļas un raksta elementu atšķirība

Sadaļas un raksta elementiem, lai gan no pirmā acu uzmetiena tie šķiet ļoti līdzīgi, ir atšķirīga semantiskā nozīme. Raksta elements ir paredzēts pilnīga, pašpietiekama satura grupēšanai, un to var skatīt atsevišķi no pārējā lapas satura. Sadaļas elementam ir cita semantiska nozīme, tas ir paredzēts satura grupēšanai, kas ir neatņemama sastāvdaļa kaut kam citam.

Bet kā autors var zināt, kāds ir lapas saturs? Apskatīsim to ar raksta fragmenta piemēru. Fragments ir daļa no raksta, un tāpēc tā satura grupēšanai jāizmanto sadaļas elements. Bet tas pats fragments, kas jau atstāts kā komentārs, pārstāvēs kaut ko veselu, pilnīgu. Tāpēc šajā kontekstā raksta elementu var izmantot tā grupēšanai. Bet, protams, var pamatot un otrādi. Tāpēc tas, kuru elementu izmantot satura grupēšanai, vairumā gadījumu ir atkarīgs no jūsu kā autora subjektīvā viedokļa. Bet vissvarīgākais šajā pieejā ir saglabāt izvēlēto pozīciju. Tāpēc, jo konsekventāks ir autors struktūras veidošanā, jo vairāk jēgas viņš tajā var ielikt.

). Katra atzīme (sadaļa) jābūt pārim (/ sadaļa)... Nepieciešamie parametri ir vārds un cilpa... Cilpas (sadaļas) nosaukums var būt jebkurš nosaukums, kas sastāv no burtiem, cipariem un pasvītrojumiem. Cikli (sadaļa) var būt ligzdoti, un ligzdotajiem nosaukumiem (sadaļai) jābūt unikāliem savā starpā. Mainīgs cilpa(parasti vērtību masīvs) nosaka ciklu atkārtojumu skaitu. Drukājot mainīgos lielumus sadaļā, sadaļas nosaukums jānorāda blakus mainīgā nosaukumam kvadrātiekavās. (sadaļa) tiek izpildīts, ja parametrs cilpa nesatur vērtības.

Atribūta nosaukums Veids Obligāti Noklusējuma Apraksts
vārds virkne n / a Sadaļas nosaukums
cilpa jaukts n / a Vērtība, kas nosaka ciklu atkārtojumu skaitu.
sākt vesels skaitlis 0 Tās pozīcijas indekss, kurā cilpa sāksies. Ja vērtība ir negatīva, tad sākuma pozīcija tiek aprēķināta no masīva beigām. Piemēram, ja cilpas mainīgajā ir 7 elementi un sākuma atribūta vērtība ir -2, tad sākuma indekss būs 5. Nederīgas vērtības (vērtības ārpus masīva) tiek automātiski saīsinātas līdz tuvākajai derīgajai vērtībai.
solis vesels skaitlis 1 Soļa vērtība, kas tiek izmantota masīva šķērsošanai. Piemēram, solis = 2 norāda masīva šķērsošanu ar elementiem 0,2,4 ... Ja solis ir negatīvs, tad masīvs tiks šķērsots pretējā virzienā.
maks vesels skaitlis 1 Maksimālais ciklu atkārtojumu skaits.
šovs Būla taisnība Norāda, vai rādīt šo sadaļu

Piezīme

Sākot ar Smarty 1.5.0, sesijas rekvizītu mainīgo sintakse ir mainīta no (% sectionname.varname%) uz ($ smarty.section.sectionname.varname). Vecā sintakse joprojām tiek atbalstīta, taču jūs redzēsit tikai jaunās sintakses piemērus.

indekss tiek izmantots, lai parādītu masīva pašreizējo indeksu, sākot ar nulli (vai sākuma atribūtu, ja norādīts) un palielinot par vienu (vai par soļa atribūta vērtību, ja norādīts).

Tehniska piezīme

Ja atribūti step un start nav norādīti, tad indekss ir tāds pats kā iterācijas sadaļas atribūts, izņemot to, ka tas sākas ar 0, nevis 1.

iterācija tiek izmantota, lai parādītu cilpas pašreizējo iterācijas numuru.

Piezīme

Atšķirībā no indeksa rekvizīta šī vērtība nav atkarīga no sākuma, soļa un maksimālā rekvizīta. Arī iterācijas sākas ar vienu, nevis ar nulli, piemēram, indeksi. rownum ir iterācijas īpašuma sinonīms, tie darbojas vienādi.

Piemērs 7.38. īpašuma (sadaļas) atkārtojums

piešķirt ("custid", $ id); ?> (sadaļas nosaukums = cu cilpa = $ custid start = 5 soļi = 2) iterācija = ($ smarty.section.cu.iteration) index = ($ smarty.section.cu.index) id = ($ custid)
(/ sadaļa)

Šī piemēra rezultāts:

Atkārtojums = 1 indekss = 5 id = 3005
iterācija = 2 indekss = 7 id = 3007
iterācija = 3 indekss = 9 id = 3009
iterācija = 4 indekss = 11 id = 3011
iterācija = 5 indekss = 13 id = 3013
iterācija = 6 indekss = 15 id = 3015

Šajā piemērā tiek izmantots iterācijas rekvizīts, lai tabulas virsrakstu izdrukātu ik pēc piecām rindām (lieto (ja) ar mod operatoru).

(sadaļas nosaukums = sadarbības cilpa = $ kontakti) (ja $ smarty.section.co.iteration% 5 == 1) (/ ja) (/ sadaļa)
Nosaukums>MājasŠūnaE -pasts
skats ($ contacts.name) ($ contacts.home) ($ contacts.cell) ($ contacts.email)