Secțiunea murdară php. Includerea fișierelor în PHP folosind include și require. Diferența dintre elementele de secțiune și articol

Un articol care explorează elementul de secțiune HTML din categoria de secțiuni.

Scopul elementului de secțiune

Elementul secțiune este utilizat pentru a crea o secțiune într-un document care grupează un anumit conținut de subiect. Pentru fiecare secțiune din document, trebuie indicată numele (tema) acesteia. Acest lucru se face de obicei cu anteturi (elemente h1-h6).

Titlul secțiunii

Conținutul secțiunii...

Elementele de secțiune sunt utilizate în mod obișnuit în următoarele situații:

  • pentru a marca secțiunile dintr-o secțiune. De exemplu, pentru a marca capitole dintr-un articol, file dintr-o casetă de dialog, secțiuni dintr-o disertație etc.
  • a grupa mai multe secțiuni într-un singur grup tematic. De exemplu, pentru a grupa cele mai recente știri de pe site, comentarii la un articol etc.

Astfel, elementul secțiune ar trebui folosit doar pentru un anumit conținut dacă are un titlu și face parte din altceva.

Folosind elementul de secțiune

De exemplu, luați în considerare un fragment de cod de pagină care conține un articol cu ​​comentarii. Fiecare dintre comentariile postate de utilizator pe pagină conține un conținut complet și, prin urmare, poate fi considerat un element de articol. Dar, în același timp, toate comentariile reprezintă un anumit grup tematic și, prin urmare, pot fi plasate în elementul de secțiune, i.e. acest element va grupa toate aceste comentarii de pe pagină împreună.

Titlul articolului

Comentarii (1)

Antet comentariu

Textul comentariului...

Antet comentariu

Textul comentariului...

Titlul articolului Comentarii Titlul comentariului Titlul comentariului

De exemplu, luați în considerare utilizarea elementelor de secțiune pentru a crea secțiuni în cadrul unui element articol:

Titlul cartii

Primul capitol

Capitolul doi

Capitolul trei

Anexa A

Anexa B

Exemplul de mai sus va avea următorul contur:

Titlul cărții Capitolul unu Capitolul doi Capitolul trei Anexa A Anexa B

Limitări ale utilizării elementului secțiune

Elementul de secțiune din HTML 5 nu este un element generic pentru gruparea conținutului, adică. nu ar trebui să fie folosit pentru a include orice conținut care vă place. Scopul său principal este de a adăuga semantică documentului și de a crea conturul acestuia.

Când un autor trebuie să grupeze conținut doar pentru a-l stila sau manipula în JavaScript, cel mai bun loc este să folosească elementul div. Elementul div, spre deosebire de elementul section, nu adaugă semantică documentului și nu participă la crearea conturului (conturului).

Diferența dintre elementele de secțiune și articol

Elementele de secțiune și articol, deși la prima vedere par foarte asemănătoare, au semnificații semantice diferite. Elementul articol are scopul de a grupa conținut care este complet, autonom și poate fi vizualizat separat de restul conținutului paginii. Iar elementul de secțiune poartă o semnificație semantică diferită, este destinat să grupeze conținut care este parte integrantă a altceva.

Dar cum poate un autor să știe ce este conținutul unei pagini? Să ne uităm la asta folosind un exemplu de fragment dintr-un articol. Un fragment face parte dintr-un articol și, prin urmare, un element de secțiune trebuie utilizat pentru a-i grupa conținutul. Dar același fragment, deja lăsat ca comentariu, va reprezenta ceva întreg, complet. Prin urmare, în acest context, elementul articol poate fi folosit pentru a-l grupa. Dar, desigur, se poate raționa, și invers. Prin urmare, ce element să utilizați pentru a grupa conținutul depinde în cele mai multe cazuri de opinia dumneavoastră subiectivă ca autor. Dar cel mai important lucru în această abordare este menținerea poziției alese. Prin urmare, cu cât autorul este mai consecvent în crearea structurii, cu atât poate pune mai mult sens în ea.

Atunci când creăm site-uri pe auto-scriere (fără a folosi cadre, CMS și alte lucruri la modă care simplifică viața dezvoltatorilor web), ne confruntăm cu problema de a face editări pe site atunci când există o mulțime de pagini.

Pentru a nu trebui să schimbăm aceleași părți ale site-ului în fiecare dintre fișierele de pagină, putem folosi instrucțiuni PHP convenabile care ne permit să includem fișiere cu codul necesar în toate paginile cu literalmente o singură linie de cod. Apoi, prin modificarea conținutului fișierului inclus, schimbăm codul pe toate paginile site-ului. Convenabil, indiferent cum arăți.

Acum să ne uităm la modalități de a conecta fișiere mai detaliat:

Folosind include și require

Nu vei putea găsi o diferență fundamentală între aceste două instrucțiuni cu toată dorința ta, dar există nuanțe:

Dacă apare o eroare în timpul executării comenzii require, analizatorul va primi un răspuns de eroare fatală și execuția codului paginii se va opri, în timp ce include va emite doar un avertisment și execuția fișierului va continua (fișierul pur și simplu nu va fi conectat). ).

Să luăm un exemplu simplu pentru o mai bună înțelegere a subiectului.

Avem minisite-ul nostru în care antetul și subsolul sunt aceleași pe toate paginile, iar corpul documentului se modifică.

Creăm fișierele header.php și footer.php în care punem codul care va fi același pe toate paginile, iar în fișierele index.php și newpage.php vom conecta părțile statice. Ca rezultat, obținem:

Conținutul Header.php

< header> < nav> < a href= "newpage1.php" title= "articol din meniu" >articol din meniu < a href= "newpage2.php" title= "articol din meniu" >articol din meniu < a href= "newpage3.php" title= "articol din meniu" >articol din meniu

Conținut Footer.php

< footer> < p>Fabricat de noi

Conținutul altor pagini ale site-ului

Minisite

O mulțime de informații utile

Ca urmare a încărcării paginii noastre, obținem următoarea imagine:

După cum putem vedea, totul funcționează excelent.

Aș dori să vă atrag atenția asupra faptului că am rulat exemplul pe serverul local Denwer, deoarece PHP necesită un server cu suport pentru PHP pentru a funcționa. Dacă creați un site web într-un folder simplu pe un computer, nimic nu va funcționa.

În exemplul de mai sus, am folosit antetul require și subsolul include. Ce să utilizați pe site-urile dvs. depinde de dvs. După cum am menționat deja, nu există prea multă diferență între ele. Cu excepția cazului în care necesită este considerată o declarație oarecum mai strictă.

De fapt, linia pur și simplu copiază întregul conținut al fișierului, calea către care indicăm, în interiorul documentului în care se află.

Folosind include _once și require _once

Când lucrați pe un site, pot apărea probleme din cauza faptului că aceeași bucată de cod este inclusă în același fișier în mod repetat.

Să presupunem că acest lucru s-a întâmplat din cauza faptului că mai multe persoane au lucrat pe site, iar când codurile au fost comasate, a ieșit la iveală un astfel de incident...

Dezvoltatorii folosesc adesea instrucțiunile include_once și require_once pentru a elimina posibilitatea unor astfel de probleme. Principiul de funcționare pentru ei este exact același ca și pentru include with require, dar dacă fișierul dintr-o astfel de instrucțiune a fost deja conectat la al nostru, atunci reconectarea nu va avea loc.

Dezavantajele acestei metode includ faptul că este mai lentă și mai intensivă din punct de vedere computațional decât predecesorii săi cu necesită, deoarece devine necesar să amintiți toate fișierele conectate și să le comparați pentru a evita duplicarea codului.

Pe o notă

  • Pentru a face mai ușor deosebirea între fișierele paginilor site-ului și fișierele fragmentelor acestora, pe care le includem în ele, fișierele incluse de obicei adaugă o parte inc la nume. Luând în considerare această abordare în exemplul nostru, am obține fișierul header.inc.php din fișierul header.php și așa mai departe. Această abordare poate face mult mai ușoară înțelegerea structurii site-ului în viitor.
  • Codul din fișierul pe care îl conectăm moștenește domeniul de aplicare al liniei în care este conectat. Tobish chiar în interiorul paginii va avea un domeniu global, iar în interiorul unei funcții va avea unul local.
  • Putem folosi include cu require oriunde dorim. Chiar și în interiorul scripturilor.

). Fiecare etichetă (secțiune) trebuie să aibă o pereche (/ secțiune)... Parametrii necesari sunt Numeși buclă... Numele buclei (secțiunii) poate fi orice nume format din litere, cifre și liniuțe de subliniere. Cicluri (secțiune) pot fi imbricate, iar numele imbricate (secțiunea) trebuie să fie unice între ele. Variabil buclă(de obicei o matrice de valori) determină numărul de iterații în buclă. Când imprimați variabile în interiorul unei secțiuni, numele secțiunii trebuie să fie indicat lângă numele variabilei între paranteze drepte. (alta sectiune) este executat dacă parametrul buclă nu contine valori.

Numele atributului Tip de Obligatoriu Mod implicit Descriere
Nume şir da n / A Numele secțiunii
buclă amestecat da n / A O valoare care determină numărul de iterații ale buclei.
start întreg Nu 0 Indicele poziției la care va începe bucla. Dacă valoarea este negativă, atunci poziția de pornire este calculată de la sfârșitul matricei. De exemplu, dacă variabila buclă are 7 elemente și valoarea atributului de pornire este -2, atunci indicele de început va fi 5. Valorile nevalide (valorile din afara matricei) sunt trunchiate automat la cea mai apropiată valoare validă.
Etapa întreg Nu 1 Valoarea pasului care este utilizată pentru a parcurge matricea. De exemplu, pasul = 2 indică o parcurgere a matricei de către elementele 0,2,4 ... Dacă pasul este negativ, atunci tabloul va fi parcurs în sens opus.
max întreg Nu 1 Numărul maxim de iterații în buclă.
spectacol boolean Nu Adevărat Indică dacă se afișează sau nu această secțiune

Notă

Începând cu Smarty 1.5.0, sintaxa pentru variabilele proprietăților de sesiune a fost schimbată de la (% sectionname.varname%) la ($ smarty.section.sectionname.varname). Vechea sintaxă este încă acceptată, dar veți vedea doar exemple ale noii sintaxe.

index este folosit pentru a afișa indexul curent al matricei, începând de la zero (sau de la atributul start, dacă este specificat) și crescând cu unu (sau cu valoarea atributului step, dacă este specificat).

Notă tehnică

Dacă atributele pas și start nu sunt specificate, atunci indexul este același cu atributul secțiunii de iterație, cu excepția faptului că începe la 0 în loc de 1.

iterația este utilizată pentru a afișa numărul curent de iterație al buclei.

Notă

Această valoare este independentă de proprietățile start, step și max, spre deosebire de proprietatea index. De asemenea, iterațiile încep la unu, mai degrabă decât la zero, precum indici. rownum este un sinonim pentru proprietatea de iterație, funcționează în același mod.

Exemplul 7.38. iterație de proprietate (secțiune).

atribuie ("custid", $ id); ?> (numele secțiunii = cu bucla = $ custid start = 5 step = 2) iterație = ($ smarty.section.cu.iteration) index = ($ smarty.section.cu.index) id = ($ custid)
(/ secțiune)

Rezultatul acestui exemplu:

Iterație = 1 index = 5 id = 3005
iterație = 2 index = 7 id = 3007
iterație = 3 index = 9 id = 3009
iterație = 4 index = 11 id = 3011
iterație = 5 index = 13 id = 3013
iterație = 6 index = 15 id = 3015

Acest exemplu folosește proprietatea de iterație pentru a tipări titlul tabelului la fiecare cinci rânduri (folosește (if) cu operatorul mod).

(numele secțiunii = bucla co = $ contacte) (dacă $ smarty.section.co.iteration% 5 == 1) (/ dacă) (/ secțiune)
Nume>AcasăCelulăE-mail
vedere ($ contacts.name) ($ contacts.home) ($ contacts.cell) ($ contacts.email)


Cuprinsul documentului

1. funcția config_load

Sintaxă:
(config_load file = "nume fișier")

Această funcție este folosită pentru a încărca variabile din fișierele de configurare într-un șablon. Pe lângă numele fișierului încărcat, această funcție poate avea mai mulți parametri suplimentari. De exemplu, parametrul secțiune, care specifică numele secțiunii de încărcat. Mai multe informații despre acești și alți parametri pot fi obținute din documentația Smarty.

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

2. Funcția de captură

Sintaxă:

(nume captură = „nume_bloc”
atribuire = "nume_variabilă")...
(/ captură)

Această funcție este concepută pentru a colecta rezultatul șablonului într-o variabilă în loc să o afișeze pe ecran.

Orice lucru între (capture name = „varname”) și (/ capture) va fi scris într-o variabilă numită varname. Conținutul capturat în acest mod poate fi folosit în șablon folosind variabila specială $ smarty.capture.varname, unde varname este valoarea transmisă atributului name al funcției de captare. Dacă nu este specificat niciun nume de variabilă, va fi folosit numele implicit.

Al doilea parametru de atribuire specifică numele variabilei căreia i se va atribui valoarea de ieșire capturată. Acest parametru, ca și numele, este opțional.

3. Funcția de secțiune

Sintaxă:

(nume secțiune = „nume_secțiune”
buclă = „variable_for_out_number_iterations”
[, start = "start_position_index"]
[, pas = „pas”] [, max = „iterații_maximum”]
[, show = "show_or_section"]) ...
(/ secțiune)

Section Section este o bucla pentru parcurgerea elementelor matricei. Parametrii necesari sunt name, care este folosit pentru a seta numele secțiunii și loop, care este o variabilă care determină numărul de iterații în buclă.

De regulă, bucla este o variabilă matrice, iar numărul de iterații de secțiune este egal cu numărul de elemente ale acestei matrice. Pentru a afișa o variabilă în interiorul unei bucle, trebuie să indicați numele secțiunii între paranteze drepte după numele variabilei.

(numele secțiunii = bucla de artă = titlul $)

Titlu: ($ titlu)

(/ secțiune)

Exemplul 15.8. Buclă pentru a repeta peste elementele matricei

4. Funcția foreach

Sintaxă:

(foreach from = "nume_matrice"
item = "nume_articol_curent")
... (/ pentru fiecare)

În plus, puteți utiliza cheia de atribute suplimentare - numele cheii pentru elementul curent al matricei și numele - numele buclei, cu care puteți accesa proprietățile acesteia. Atributele de la și articol sunt obligatorii.

Buclele Foreach sunt o alternativă la buclele de secțiune. Funcția foreach funcționează foarte mult ca bucla PHP foreach.
(foreach from = $ articole articol = artă)
Titlu: ($ artă)

(/ pentru fiecare)

Exemplul 15.9. Foreach buclă

Buclele Foreach au propriile lor proprietăți. Le puteți accesa astfel: ($ smarty.foreach.foreachname.varname), unde foreachname este numele buclei specificate de parametrul nume și varname este numele proprietății.

5. Operator if, elseif, else

Sintaxă:

(dacă expresie) action_block
(altfel expresia1) bloc_acțiune1
(altfel) action_block2
(/ dacă)

Acțiunea operatorului este aproape aceeași cu operatorul PHP dacă ... elseif ... else.

Următorii operatori de comparare pot fi utilizați în expresii: eq, ne, neq, gt, lt, lte, le, gte, ge, is even, is odd, is not even, is not odd, not, mod, div by, even de, impar de, ==,! =,>,<, <=, >=. Fiecare dintre ele trebuie separată de valorile din jur prin spații. Puteți folosi paranteze în expresii și puteți apela funcții php.

(dacă $ name eq "Vasya")
Bine ai venit, Vasya.
(elseif $ name eq "Petya")
Bine ai venit, Petya.
(altfel)
Bine ati venit. Cine ești tu?
(/ dacă)

Exemplul 15.10. If, elseif, else declarații

(* acest exemplu nu va funcționa deoarece nu există spații în jurul operatorilor de comparație *)
(dacă $ nume == „Vasya” || $ nume == „Petya”)
...
(/ dacă)
Exemplul 15.11. Exemplu spart