Sekcia bez hriechu php. Zahrnutie súborov v PHP pomocou zahrnúť a vyžadovať

Pri vytváraní stránok na automatickom písaní (bez použitia rámcov, CMS a ďalších módnych vecí, ktoré vývojárom webu uľahčujú život) stojíme pred problémom vykonávať úpravy webu, keď je veľa stránok.

Aby sme nemuseli meniť rovnaké časti stránky v každom zo súborov stránok, môžeme použiť praktické inštrukcie PHP, ktoré nám umožňujú zahrnúť súbory s potrebným kódom na všetky stránky doslova s ​​jedným riadkom kódu. Potom zmenou obsahu zahrnutého súboru zmeníme kód na všetkých stránkach webu. Pohodlné, bez ohľadu na to, ako vyzeráte.

Teraz sa pozrime bližšie na to, ako prepojiť súbory:

Použitie zahrnúť a vyžadovať

So všetkou túžbou nebudete môcť nájsť zásadný rozdiel medzi týmito dvoma pokynmi, existujú však nuansy:

Ak počas vykonávania príkazu require dôjde k chybe, syntaktický analyzátor dostane smrteľnú chybovú odpoveď a vykonávanie kódu stránky sa zastaví, zatiaľ čo zahrnutie vydá iba varovanie a spustenie súboru bude pokračovať (súbor jednoducho nebude pripojený).

Ukážme si jednoduchý príklad na lepšie pochopenie témy.

Máme náš minisite, v ktorom sú hlavička a päta na všetkých stránkach rovnaké a zmení sa telo dokumentu.

Vytvárame súbory header.php a footer.php, do ktorých umiestnime kód, ktorý bude rovnaký na všetkých stránkach, a v súboroch index.php a newpage.php spojíme statické časti. V dôsledku toho dostaneme:

Obsah Header.php

< header> < nav> < a href= "newpage1.php" title= "položka ponuky" >položka ponuky < a href= "newpage2.php" title= "položka ponuky" >položka ponuky < a href= "newpage3.php" title= "položka ponuky" >položka ponuky

Obsah Footer.php

< footer> < p>Vyrobené nami

Obsah ďalších stránok webu

Minisite

Veľa užitočných informácií

V dôsledku načítania našej stránky dostaneme nasledujúci obrázok:

Ako vidíme, všetko funguje skvele.

Chcel by som vás upozorniť na skutočnosť, že sme príklad uviedli na miestnom serveri Denwer, pretože PHP vyžaduje na svoju prevádzku server s podporou PHP. Ak vytvoríte webovú stránku v jednoduchom priečinku na počítači PC, nič nebude fungovať.

Vo vyššie uvedenom príklade sme použili hlavičku require a pätu include. Je len na vás, čo na svojich stránkach použijete. Ako už bolo spomenuté, nie je medzi nimi veľký rozdiel. Pokiaľ nie je požiadavka považovaná za trochu prísnejšie vyhlásenie.

V skutočnosti linka jednoducho skopíruje celý obsah súboru, cestu, na ktorú označujeme, do dokumentu, v ktorom sa nachádza.

Použitie include _once a require _once

Pri práci na webe môžu nastať problémy súvisiace so skutočnosťou, že rovnaký kus kódu je opakovane zahrnutý v tom istom súbore.

Predpokladajme, že sa to stalo kvôli tomu, že na mieste pracovalo niekoľko ľudí, a keď boli kódy zlúčené, došlo k takémuto incidentu ...

Vývojári často používajú príkazy include_once a require_once na vylúčenie možnosti vzniku takýchto problémov. Princíp činnosti je pre nich úplne rovnaký ako pre include with require, ale ak je súbor v takejto inštrukcii už pripojený k nášmu, k opätovnému pripojeniu nedôjde.

Medzi nevýhody tejto metódy patrí skutočnosť, že funguje pomalšie a výpočtovo náročnejšie, ako vyžadujú jej predchodcovia, pretože pretože je nevyhnutné pamätať si všetky zahrnuté súbory a porovnávať ich, aby sa predišlo duplikácii kódu.

Na poznámku

  • Aby bolo pohodlnejšie rozlišovať medzi súbormi stránok stránok a súbormi ich fragmentov, ktoré do nich uvádzame, obvykle zahrnuté súbory pridávajú k názvu časticu inc. Ak vezmeme do úvahy tento prístup v našom prípade, získali by sme súbor header.inc.php zo súboru header.php a podobne. Tento prístup môže v budúcnosti uľahčiť porozumenie štruktúre stránky.
  • Kód zo súboru, ktorý pripájame, dedí rozsah riadku, v ktorom je pripojený. Tobish hneď vo vnútri stránky bude mať globálny rozsah a vo funkcii bude mať miestny rozsah.
  • Zahrnúť s požiadavkou môžeme použiť kdekoľvek chceme. Dokonca aj vo vnútri skriptov.
Obsah dokumentu

1. funkcia config_load

Syntax:
(config_load file = "názov súboru")

Táto funkcia sa používa na načítanie premenných z konfiguračných súborov do šablóny. Táto funkcia môže mať okrem názvu načítaného súboru aj niekoľko ďalších parametrov. Napríklad parameter section, ktorý určuje názov sekcie, ktorá sa má načítať. Viac informácií o týchto a ďalších parametroch je možné získať z dokumentácie Smarty.

Príklad:
(config_load file = "task.conf")

2. Funkcia zachytenia

Syntax:

(capture name = "názov_ bloku"
assign = "variable_name") ...
(/ zachytenie)

Táto funkcia je navrhnutá tak, aby zhromažďovala výstup šablóny do premennej namiesto jej zobrazovania na obrazovke.

Čokoľvek medzi (názov zachytenia = "názov varu") a (/ zachytenie) bude zapísané do premennej s názvom názov premennej. Takto zachytený obsah je možné použiť v šablóne pomocou špeciálnej premennej $ smarty.capture.varname, kde varname je hodnota odovzdaná do atribútu name funkcie zachytávania. Ak nie je zadaný žiadny názov premennej, použije sa predvolený názov.

Druhé priradenie parametra určuje názov premennej, ku ktorej bude priradená zachytená výstupná hodnota. Tento parameter, ako názov, je voliteľný.

3. Funkcia sekcie

Syntax:

(názov sekcie = "názov_sekcie"
loop = "variable_for_out_number_iterations"
[, start = "start_position_index"]
[, step = "step"] [, max = "maximum_iterations"]
[, show = "show_or_section"]) ...
(/ sekcia)

Sekcia Sekcia je slučka na prechádzanie prvkov poľa. Požadované parametre sú name, ktorý sa používa na nastavenie názvu sekcie, a loop, čo je premenná, ktorá určuje počet iterácií slučky.

Smyčka je spravidla premenná typu poľa a počet iterácií sekcií sa rovná počtu prvkov v tomto poli. Na zobrazenie premennej v cykle musíte za názvom premennej uviesť názov sekcie v hranatých zátvorkách.

(názov sekcie = umelecká slučka = $ titul)

Názov: ($ titul)

(/ sekcia)

Príklad 15.8. Smyčkou iterujte prvky poľa

4. Funkcia foreach

Syntax:

(foreach from = "array_name"
item = "current_item_name")
... (/ pre každý)

Okrem toho môžete použiť kľúč ďalších atribútov - názov kľúča pre aktuálny prvok poľa a názov - názov slučky, pomocou ktorého získate prístup k jeho vlastnostiam. Atribúty from a item sú povinné.

Foreach slučky sú alternatívou k sekčným slučkám. Funkcia foreach je veľmi podobná slučke PHP foreach.
(foreach from = $ articles item = art)
Názov: ($ art)

(/ pre každý)

Príklad 15.9. Foreachova slučka

Foreach slučky majú svoje vlastné vlastnosti. Prístup k nim získate týmto spôsobom: ($ smarty.foreach.foreachname.varname), kde foreachname je názov slučky špecifikovaný parametrom name a varname je názov vlastnosti.

5. Operátor if, elseif, else

Syntax:

(ak je výraz) action_block
(elseif expression1) action_block1
(else) action_block2
(/ ak)

Činnosť operátora je takmer rovnaká ako operácia PHP, ak ... elseif ... else.

Vo výrazoch je možné použiť nasledujúce porovnávacie operátory: eq, ne, neq, gt, lt, lte, le, gte, ge, je párne, je nepárne, nie je párne, nie je nepárne, nie, mod, div by, even podľa, nepárne, == ,! =,>,<, <=, >=. Každý z nich musí byť oddelený od okolitých hodnôt medzerami. Môžete použiť zátvorky vo výrazoch a volať funkcie php.

(ak $ name rovná sa „Vasya“)
Vitaj, Vasya.
(elseif $ name ekv. „Petya“)
Vitaj, Petya.
(inak)
Vitajte Kto si?
(/ ak)

Príklad 15.10. Ak, elseif, inak vyhlásenia

( * tento príklad nebude fungovať, pretože okolo operátorov porovnania nie sú medzery *)
(ak $ name == "Vasya" || $ name == "Petya")
...
(/ ak)
Príklad 15.11. Zlomený príklad

Článok, ktorý skúma prvok sekcie HTML z kategórie sekcií.

Účel prvku sekcie

Prvok sekcie sa používa na vytvorenie sekcie v dokumente, ktorý zoskupuje určitý obsah predmetu. Pre každú časť dokumentu by mal byť uvedený jeho názov (téma). Obvykle sa to robí s hlavičkami (prvky h1-h6).

Nadpis sekcie

Obsah sekcie ...

Prvky sekcie sa bežne používajú v nasledujúcich situáciách:

  • na označenie sekcií v rámci sekcie. Napríklad na označenie kapitol v článku, kariet v dialógovom okne, sekcií v dizertačnej práci atď.
  • zoskupiť niekoľko sekcií do jednej tematickej skupiny. Napríklad zoskupenie najnovších správ na webe, komentárov k článku atď.

Prvok sekcie by sa teda mal použiť pre určitý obsah iba vtedy, ak má nadpis a je súčasťou niečoho iného.

Použitie prvku sekcie

Zoberme si napríklad útržok kódu stránky, ktorý obsahuje článok s komentármi. Každý z komentárov uverejnených používateľom na stránke obsahuje nejaký kompletný obsah, a preto ho možno považovať za prvok článku. Všetky komentáre však zároveň predstavujú určitú tematickú skupinu, a preto ich možno umiestniť do prvku sekcie, t.j. tento prvok zoskupí všetky tieto komentáre na stránke.

Názov článku

Komentáre (1)

Hlavička komentára

Text komentára ...

Hlavička komentára

Text komentára ...

Názov článku Komentáre Komentár Názov Komentár Názov

Zvážte napríklad použitie prvkov sekcie na vytváranie sekcií v rámci prvku článku:

Názov knihy

Prvá kapitola

Kapitola druhá

Kapitola tretia

Príloha A

Príloha B

Vyššie uvedený príklad bude mať nasledujúci prehľad:

Názov knihy Kapitola prvá Kapitola druhá Kapitola tri Príloha A Príloha B

Obmedzenia pri použití prvku sekcie

Prvok sekcie v HTML 5 nie je generickým prvkom na zoskupovanie obsahu, t.j. nemalo by sa používať na zabalenie akéhokoľvek obsahu, ktorý sa vám páči. Jeho hlavným účelom je pridať do dokumentu sémantiku a vytvoriť jeho obrys.

Keď autor potrebuje zoskupiť obsah, aby ho mohol upravovať alebo upravovať v JavaScripte, je pre neho najlepšie použiť prvok div. Prvok div, na rozdiel od prvku sekcie, nepridáva do dokumentu sémantiku a nezúčastňuje sa na vytváraní jeho obrysu (obrysu).

Rozdiel medzi prvkami sekcie a článku

Prvky sekcie a článku, aj keď sa na prvý pohľad zdajú veľmi podobné, majú rôzny sémantický význam. Prvok článku je určený na zoskupenie obsahu, ktorý je úplný, samostatný a je možné ho prezerať oddelene od zvyšku obsahu stránky. A prvok sekcie má iný sémantický význam, je určený na zoskupenie obsahu, ktorý je neoddeliteľnou súčasťou niečoho iného.

Ako však môže autor vedieť, čo je to určitý obsah na stránke? Pozrime sa na to s ukážkou úryvku článku. Úryvok je súčasťou článku, a preto je potrebné na zoskupenie jeho obsahu použiť prvok sekcie. Ale ten istý fragment, ktorý už bol ponechaný ako komentár, bude predstavovať niečo celé, úplné. Preto v tejto súvislosti možno prvok článku použiť na zoskupenie. Ale samozrejme, človek môže uvažovať a naopak. Ktorý prvok použiť na zoskupenie obsahu preto vo väčšine prípadov závisí od vášho subjektívneho názoru ako autora. Ale najdôležitejšou vecou v tomto prístupe je udržať zvolenú pozíciu. Čím dôslednejší je autor pri vytváraní štruktúry, tým väčší zmysel do nej môže vložiť.

). Každá značka (sekcia) musí mať pár (/ sekcia)... Požadované parametre sú názov a slučka... Názov slučky (sekcie) môže byť ľubovoľný názov pozostávajúci z písmen, číslic a podčiarkovníkov. Cykly (sekcia) môžu byť vnorené a vnorené názvy (sekcia) musia byť navzájom jedinečné. Variabilné slučka(zvyčajne pole hodnôt) určuje počet iterácií slučky. Pri tlači premenných v sekcii musí byť názov sekcie uvedený vedľa názvu premennej v hranatých zátvorkách. (sectionelse) sa vykoná, ak je parameter slučka neobsahuje žiadne hodnoty.

Názov atribútu Typ Požadovaný Predvolené Popis
názov reťazec Áno neuvádza sa Názov sekcie
slučka zmiešané Áno neuvádza sa Hodnota, ktorá určuje počet iterácií slučky.
začať celé číslo Nie 0 Index polohy, v ktorej sa slučka začne. Ak je hodnota záporná, počiatočná pozícia sa vypočíta z konca poľa. Ak je napríklad v premennej slučky 7 prvkov a hodnota atribútu štart je -2, potom bude počiatočný index 5. Neplatné hodnoty (hodnoty mimo poľa) sa automaticky skrátia na najbližšiu platnú hodnotu.
krok celé číslo Nie 1 Hodnota kroku, ktorá sa používa na prechod poľom. Napríklad krok = 2 označuje prechod poľa po prvkoch 0,2,4 ... Ak je krok záporný, poľom sa bude prechádzať v opačnom smere.
max celé číslo Nie 1 Maximálny počet iterácií slučky.
šou booleovský Nie pravda Udáva, či sa má táto sekcia zobrazovať alebo nie

Poznámka

Počnúc verziou Smarty 1.5.0 sa syntax premenných vlastností relácie zmenila z (% namename.varname%) na ($ smarty.section.sectionname.varname). Stará syntax je stále podporovaná, ale uvidíte iba príklady novej syntaxe.

index sa používa na zobrazenie aktuálneho indexu poľa, začínajúc od nuly (alebo od atribútu start, ak je zadaný) a zvyšujúcim sa o jednu (alebo hodnotou atribútu step, ak je zadaný).

Technická poznámka

Ak nie sú zadané atribúty step a start, index je rovnaký ako atribút časti iterácie, okrem toho, že začína na 0 namiesto 1.

iterácia sa používa na zobrazenie aktuálneho čísla iterácie slučky.

Poznámka

Táto hodnota je na rozdiel od vlastnosti index nezávislá od vlastností start, step a max. Iterácie tiež začínajú na jednej, a nie na nulovej úrovni ako indexy. rownum je synonymom vlastnosti iterácie, fungujú rovnako.

Príklad 7.38. iterácia majetku (sekcie)

priradiť ("custid", $ id); ?> (názov sekcie = cu loop = $ custid start = 5 krokov = 2) iterácia = ($ smarty.section.cu.iteration) index = ($ smarty.section.cu.index) id = ($ custid)
(/ sekcia)

Výsledok tohto príkladu:

Iterácia = 1 index = 5 id = 3005
iterácia = 2 index = 7 id = 3007
iterácia = 3 index = 9 id = 3009
iterácia = 4 index = 11 id = 3011
iterácia = 5 index = 13 id = 3013
iterácia = 6 index = 15 id = 3015

Tento príklad používa vlastnosť iterácie na vytlačenie názvu tabuľky každých päť riadkov (používa (ak) s operátorom mod).

(názov sekcie = čo slučka = $ kontakty) (ak $ smarty.section.co.iteration% 5 == 1) (/ ak) (/ sekcia)
Meno>DomovBunkaE -mail
vyhliadka ($ contacts.name) ($ contacts.home) ($ contact.cell) ($ contacts.email)