Seksion pa mëkat php Përfshirja e skedarëve në PHP duke përdorur përfshijnë dhe kërkojnë. Kufizimet kur përdorni elementin e seksionit

) Çdo etiketë (seksioni) duhet të ketë një palë (/ seksioni) ... Parametrat e kërkuar janë emri dhe lak ... Emri i lakut (seksionit) mund të jetë çdo emër i përbërë nga shkronja, numra dhe nënvizime. Ciklet (seksioni) mund të jenë të vendosura dhe emrat e vendosur (pjesa) duhet të jenë unike midis tyre. Ndryshore lak (zakonisht një varg vlerash) përcakton numrin e përsëritjeve të lakut. Kur shtypni variablat brenda një seksioni, emri i seksionit duhet të tregohet pranë emrit të ndryshores brenda kllapave katrore. (pjesa tjetër) ekzekutohet nëse parametri lak nuk përmban vlera.

Emri i atributit Një lloj E detyrueshme Parazgjedhur Përshkrim
emri vargut po n / a Emri i seksionit
lak i perzier po n / a Një vlerë që përcakton numrin e përsëritjeve të lakut.
filloj numër i plotë Jo 0 Indeksi i pozicionit në të cilin do të fillojë lak. Nëse vlera është negative, atëherë pozicioni fillestar llogaritet nga fundi i vargut. Për shembull, nëse ndryshorja e lakut ka 7 elementë dhe vlera e atributit startues është -2, atëherë indeksi fillestar do të jetë 5. Vlerat e pavlefshme (vlerat jashtë vargut) shkurtohen automatikisht në vlerën më të afërt të vlefshme.
hap numër i plotë Jo 1 Vlera e hapit të përdorur për të përshkuar grupin. Për shembull, hapi \u003d 2 tregon një përshkim të masës nga elementet 0,2,4 ... Nëse hapi është negativ, atëherë vargu do të përshkohet në drejtim të kundërt.
maks numër i plotë Jo 1 Numri maksimal i përsëritjeve të lakut.
shfaqje boolean Jo e vërtetë Tregon nëse duhet të tregohet kjo pjesë apo jo

shënim

Duke filluar me Smarty 1.5.0, sintaksa për variablat e vetive të sesionit është ndryshuar nga (% sectionname.varname%) në ($ smarty.section.sectionname.varname). Sintaksa e vjetër mbështetet akoma, por do të shihni vetëm shembuj të sintaksës së re.

indeksi përdoret për të shfaqur indeksin aktual të grupit, duke filluar nga zero (ose në atributin e fillimit, nëse specifikohet) dhe rritet me një (ose me vlerën e atributit të hapit, nëse specifikohet).

Shënim Teknik

Nëse atributet e hapit dhe fillimit nuk janë specifikuar, atëherë indeksi është i njëjtë me atributin në seksionin e përsëritjes, përveç që fillon me 0, jo 1.

iteracioni përdoret për të shfaqur numrin aktual të përsëritjes së lakut.

shënim

Kjo vlerë është e pavarur nga vetitë e fillimit, hapit dhe maksimumit, ndryshe nga vetia e indeksit. Gjithashtu, përsëritjet fillojnë me një, sesa me zero si indekset. rownum është një sinonim për vetinë e përsëritjes, ato funksionojnë në të njëjtën mënyrë.

Shembull 7.38. përsëritja e pronës (seksionit)

cakto ("custid", $ id); ?\u003e (emri i seksionit \u003d lak cu \u003d $ custid start \u003d 5 hap \u003d 2) përsëritje \u003d ($ $ smarty.section.cu.iteration) indeksi \u003d ($ smarty.section.cu.index) id \u003d ($ custid)
(/ seksioni)

Rezultati i këtij shembulli:

Përsëritje \u003d 1 indeks \u003d 5 id \u003d 3005
përsëritje \u003d 2 indeks \u003d 7 id \u003d 3007
përsëritje \u003d 3 indeks \u003d 9 id \u003d 3009
përsëritje \u003d 4 indeks \u003d 11 id \u003d 3011
përsëritje \u003d 5 indeks \u003d 13 id \u003d 3013
përsëritje \u003d 6 indeks \u003d 15 id \u003d 3015

Ky shembull përdor vetinë e përsëritjes për të nxjerrë titullin e tabelës çdo pesë rreshta (përdor (nëse) me operatorin mod).

(emri i seksionit \u003d lak bashkë \u003d $ kontakte) (nëse $ smarty.section.co.iteration% 5 \u003d\u003d 1) (/ nese) (/ seksioni)
Emri\u003eShtëpiQelizëEmail
pamje ($ contact.name) ($ contact.home) ($ contact.cell) ($ contact.email)


Tabela e përmbajtjes së dokumenteve

1. funksioni config_load

Sintaksë:
(skedari config_load \u003d "emri i skedarit")

Ky funksion përdoret për të ngarkuar variablat nga skedarët e konfigurimit në një model. Përveç emrit të skedarit të ngarkuar, ky funksion mund të ketë disa parametra shtesë. Për shembull, parametri i seksionit, i cili specifikon emrin e seksionit që do të ngarkojë. Më shumë informacion në lidhje me këto dhe parametra të tjerë mund të merren nga dokumentacioni Smarty.

Shembull:
(skedari config_load \u003d "task.conf")

2. Funksioni i kapjes

Sintaksë:

(kap emri \u003d "bllok_emri"
cakto \u003d "emri i ndryshores") ...
(/ kapje)

Ky funksion është krijuar për të mbledhur daljen e modelit në një ndryshore në vend që ta shfaqë atë në ekran.

Çdo gjë ndërmjet (emri i kapjes \u003d "varname") dhe (/ kapja) do të shkruhet në një variabël të quajtur varname. Përmbajtja e kapur në këtë mënyrë mund të përdoret në model duke përdorur ndryshoren speciale $ smarty.capture.varname, ku varname është vlera e kaluar në atributin e emrit të funksionit të kapjes. Nëse nuk përcaktohet ndonjë emër i ndryshores, do të përdoret emri i paracaktuar.

Parametri i dytë cakton specifikon emrin e ndryshores së cilës do t'i caktohet vlera e kapur e daljes. Ky parametër, si emri, është opsional.

3. Funksioni i seksionit

Sintaksë:

(emri i seksionit \u003d "emri i seksionit"
loop \u003d "variabli_për_ jashtë_veprimeve_numër"
[, start \u003d "start_пози_index"]
[, hap \u003d "hap"] [, max \u003d "maksimumi_teratacione"]
[, shfaqje \u003d "shfaqje_ ose_pjesë"]) ...
(/ seksioni)

Seksioni Seksioni është një lak për përshkimin e elementeve të grupit. Parametrat e kërkuar janë emri, i cili përdoret për të vendosur emrin e seksionit dhe laku, i cili është një ndryshore që përcakton numrin e përsëritjeve të lakut.

Si rregull, lak është një ndryshore e vargut, dhe numri i përsëritjeve të seksioneve është i barabartë me numrin e elementeve të këtij grupi. Për të shfaqur një ndryshore brenda një lak, duhet të tregoni emrin e seksionit në kllapa katrore pas emrit të ndryshores.

(emri i seksionit \u003d lak arti \u003d $ titull)

Titulli: ($ title)

(/ seksioni)

Shembull 15.8. Lak për të përsëritur mbi elementet e grupit

4. Funksioni i predikimit

Sintaksë:

(paralajmërim nga \u003d "array_name"
artikulli \u003d "emri i tanishëm_item")
... (/ per secilin)

Përveç kësaj, mund të përdorni çelësin e atributeve shtesë - emrin e çelësit për elementin aktual të grupit dhe emrin - emrin e lakut, me të cilin mund të përdorni pronat e tij. Kërkohen atributet nga dhe artikulli.

Laket e predikimit janë një alternativë ndaj sytheve të seksioneve. Funksioni i parathënies është shumë i ngjashëm me lakun e paralajmërimit të PHP.
(paralajmërim nga \u003d $ artikuj artikull \u003d art)
Titulli: ($ art)

(/ per secilin)

Shembulli 15.9. Lak parathënie

Sythet e predikimit kanë vetitë e tyre. Ju mund t'i përdorni ato si kjo: ($ smarty.foreach.foreachname.varname), ku foreachname është emri i lakut i specifikuar nga parametri i tij i emrit dhe varname është emri i pronës.

5. Operatori nëse, ndryshe, tjetër

Sintaksë:

(nëse shprehje) action_block
(tjetër shprehje1) action_block1
(tjetër) veprim_blloku2
(/ nese)

Veprimi i operatorit është pothuajse i njëjtë me operatorin PHP nëse ... përndryshe ... tjetër.

Operatorët e mëposhtëm të krahasimit mund të përdoren në shprehje: eq, ne, neq, gt, lt, lte, le, gte, ge, është çift, është i çift, nuk është çift, nuk është i rastësishëm, jo, mod, i ndarë me, madje me, tek, \u003d\u003d ,! \u003d,\u003e,<, <=, >\u003d Secila prej tyre duhet të ndahet nga vlerat përreth me hapësira. Ju mund të përdorni kllapa në shprehje dhe të thirrni funksione php.

(nëse $ name eq "Vasya")
Mirësevini, Vasya.
(përndryshe $ name eq "Petya")
Mirësevini, Petya.
(tjeter)
Mirëseardhje Dhe kush je ti?
(/ nese)

Shembull 15.10. Nëse, përndryshe, tjetër deklarata

(* ky shembull nuk do të funksionojë pasi nuk ka hapësira rreth operatorëve të krahasimit *)
(nëse $ name \u003d\u003d "Vasya" || $ name \u003d\u003d "Petya")
...
(/ nese)
Shembull 15.11. Shembull i thyer

Kur krijojmë faqe në vetë-shkrim (pa përdorur korniza, CMS dhe gjëra të tjera në modë që e bëjnë jetën më të lehtë për zhvilluesit e faqeve në internet), ne përballemi me problemin e bërjes së redaktimeve në sit kur ka shumë faqe.

Kështu që nuk duhet të ndryshojmë të njëjtat pjesë të faqes në secilin prej skedarëve të faqes, ne mund të përdorim udhëzime të përshtatshme PHP që na lejojnë të përfshijmë skedarë me kodin e nevojshëm në të gjitha faqet me fjalë për fjalë një linjë kodi. Pastaj, duke ndryshuar përmbajtjen e skedarit të përfshirë, ne ndryshojmë kodin në të gjitha faqet e faqes. I përshtatshëm, pa marrë parasysh se si dukeni.

Tani le të shohim më nga afër se si të lidhim skedarët:

Përdorimi përfshin dhe kërkon

Ju nuk do të jeni në gjendje të gjeni një ndryshim thelbësor midis këtyre dy udhëzimeve me gjithë dëshirën tuaj, por ka nuanca:

Nëse ndodh një gabim gjatë ekzekutimit të komandës Require, analizuesi do të marrë një përgjigje fatale të gabimit dhe ekzekutimi i kodit të faqes do të ndalet, ndërsa përfshijnë do të lëshojë vetëm një paralajmërim dhe ekzekutimi i skedarit do të vazhdojë (skedari thjesht nuk do të jetë i lidhur).

Le të marrim një shembull të thjeshtë për një kuptim më të mirë të temës.

Ne kemi minisitetin tonë në të cilin titulli dhe fundi i faqes janë të njëjtë në të gjitha faqet dhe trupi i dokumentit ndryshon.

Ne krijojmë skedarë header.php dhe footer.php në të cilat vendosim kodin që do të jetë i njëjtë në të gjitha faqet, dhe në skedarët index.php dhe newpage.php do të lidhim pjesët statike. Si rezultat, ne marrim:

Header.prmbajtja e php

< header> < nav> < a href= "newpage1.php" title= "artikulli i menusë" > artikulli i menusë < a href= "newpage2.php" title= "artikulli i menusë" > artikulli i menusë < a href= "newpage3.php" title= "artikulli i menusë" > artikulli i menusë

Përmbajtja në fund të faqes.php

< footer> < p> Bërë nga ne

Përmbajtja e faqeve të tjera të faqes

Minisite

Shumë informacione të dobishme

Si rezultat i ngarkimit të faqes tonë, ne kemi foton e mëposhtme:

Siç mund ta shohim, gjithçka funksionon shkëlqyeshëm.

Vini re se kemi ekzekutuar shembullin në serverin lokal Denwer, pasi që PHP kërkon një server me mbështetjen e tij për PHP të funksionojë. Nëse krijoni një faqe në internet në një dosje të thjeshtë në një PC, asgjë nuk do të funksionojë.

Në shembullin e mësipërm, ne përdorëm kokën e kërkimit dhe fuser përfshijnë. Çfarë të përdorni në faqet tuaja varet nga ju. Siç është përmendur tashmë, nuk ka shumë ndryshim midis tyre. Nëse kërkesa nuk konsiderohet një deklaratë disi më e rreptë.

Në fakt, linja thjesht kopjon të gjithë përmbajtjen e skedarit, rrugën për të cilën tregojmë, në dokumentin në të cilin ndodhet.

Përdorimi përfshin _ një herë dhe kërkon _ një herë

Kur punoni në një sit, problemet mund të lindin për faktin se e njëjta pjesë e kodit është përfshirë në një skedar në mënyrë të përsëritur.

Supozoni se kjo ka ndodhur për shkak të faktit se disa njerëz kanë punuar në sit, dhe kur kodet u bashkuan, doli një incident i tillë ...

Zhvilluesit shpesh përdorin deklarata përfshijnë_ një herë dhe kërkojnë një herë për të eleminuar mundësinë e problemeve të tilla. Parimi i funksionimit për ta është saktësisht i njëjtë me përfshirjen me të kërkojë, por nëse skedari në një udhëzim të tillë tashmë është lidhur me tonën, atëherë nuk do të ndodhë lidhja e re.

Disavantazhet e kësaj metode përfshijnë faktin se ajo punon ngadalë dhe më intensivisht nga ana kompjuterike sesa kërkojnë paraardhësit e saj, pasi bëhet e nevojshme të mbani mend të gjitha skedarët e përfshirë dhe t'i krahasoni ato në mënyrë që të shmangni dyfishimin e kodit.

Në një shënim

  • Për ta bërë më të lehtë dallimin midis skedarëve të faqeve të faqes dhe skedarëve të fragmenteve të tyre, të cilat ne i përfshijmë në to, skedarët e përfshirë zakonisht shtojnë një pjesë inc në emër. Duke marrë parasysh këtë qasje në shembullin tonë, ne do të merrnim skedarin header.inc.php nga skedari header.php etj. Kjo qasje mund ta bëjë shumë më të lehtë për të kuptuar strukturën e faqes në të ardhmen.
  • Kodi nga skedari që po lidhim trashëgon fushën e linjës në të cilën është lidhur. Tobish brenda faqes do të ketë një hapësirë \u200b\u200bglobale dhe brenda funksionit do të ketë një hapësirë \u200b\u200blokale.
  • Ne mund të përdorim përfshijnë me të kërkojë ku të duam. Edhe brenda skenareve.