Secțiunea imaginară php. Includerea fișierelor în PHP folosind include și require. Folosind include _once și require _once

03.04.2021 Siguranță

Un articol care examinează elementul HTML al secțiunii din categoria de secțiuni.

Scopul elementului de secțiune

Elementul secțiune este folosit pentru a crea o secțiune într-un document care grupează un conținut de actualitate. Pentru fiecare secțiune din document, trebuie indicată numele (tema) acesteia. Acest lucru se face de obicei folosind titluri (elementele h1 - h6).

Titlul secțiunii

Conținutul secțiunii...

Elementele de secțiune sunt utilizate de obicei în următoarele cazuri:

  • pentru a marca secțiuni în cadrul unei secțiuni. 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 grupare cele mai recente știri pe site, comentarii la articol etc.

Astfel, elementul de 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 lăsate de un utilizator pe o 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 pe pagină împreună.

Titlul articolului

Comentarii

Titlul comentariului

Textul comentariului...

Titlul comentariului

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 Primul capitol al doilea capitol al treilea capitol Anexa A Anexa B

Limitări la utilizarea elementului de secțiune

Elementul de secțiune din HTML 5 nu este un element universal 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 structura acestuia (contur).

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

Diferența dintre elementele secțiunii și ale articolului

Elementele de secțiune și articol, deși par foarte asemănătoare la prima vedere, 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. Elementul de secțiune are o semnificație semantică diferită; este destinat să grupeze conținutul care face parte din altceva.

Dar de unde știe un autor ce este conținutul unei pagini? Să ne uităm la asta folosind un exemplu dintr-un fragment de articol. Un fragment este o parte a unui articol și, prin urmare, necesită un element de secțiune pentru a-și grupa conținutul. Dar același fragment, lăsat deja ca comentariu, va reprezenta ceva întreg, complet. Prin urmare, în acest context, puteți folosi elementul articol pentru a-l grupa. Dar, desigur, se poate argumenta 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 va putea să-i dea mai mult sens.

Prin crearea site-urilor web pe cont propriu (fără a folosi cadre, CMS și alte lucruri fanteziste care ușurează viața dezvoltatorilor web), ne confruntăm cu problema de a face modificări site-ului atunci când există o mulțime de pagini.

Pentru a ne asigura că nu trebuie să schimbăm părți identice ale site-ului în fiecare dintre fișierele de pagină, putem folosi instrucțiuni PHP convenabile, care ne oferă posibilitatea de a include fișiere cu codul necesar în toate paginile folosind literalmente o linie de cod. Apoi, prin modificarea conținutului fișierului conectat, schimbăm codul pe toate paginile site-ului. Convenabil indiferent de cum ai privi.

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

Folosind include și require

Nu veți putea detecta o diferență fundamentală între aceste două instrucțiuni, chiar dacă încercați, dar există câteva 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 inclus ).

Să ne uităm la un exemplu simplu pentru a înțelege mai bine subiectul.

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

Creăm fișierele header.php și footer.php în care plasăm 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ținutul footer.php

< footer> < p>Fabricat de noi

Conținutul altor pagini ale site-ului

Minisite

O mulțime și 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.

Vă rugăm să rețineți că am rulat exemplul pe serverul local Denwer, deoarece PHP necesită un server pentru a-l suporta. Dacă creați un site web într-un folder simplu de pe computer, nimic nu va funcționa.

În exemplul luat în considerare, am folosit require pentru a conecta antetul și pentru a include subsolul. 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 faptului că necesită este considerată o instrucțiune puțin mai strictă.

De fapt linia pur și simplu copiază întregul conținut al fișierului, calea pe care o specificăm, în documentul în care se află.

Folosind include _once și require _once

Când lucrați pe un site web, pot apărea probleme din cauza faptului că aceeași bucată de cod este inclusă într-un fișier de mai multe ori.

Să presupunem că acest lucru s-a întâmplat pentru că mai multe persoane lucrau pe site, iar când codurile au fost îmbinate, s-a întâmplat așa ceva...

Pentru a elimina posibilitatea unor astfel de probleme, dezvoltatorii folosesc adesea instrucțiunile include _once și require _once. Principiul lor de funcționare este exact același cu include și require, dar dacă fișierul dintr-o astfel de instrucțiune a fost deja conectat la al nostru, atunci reconectarea nu se va întâmpla.

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

Pe o notă

  • Pentru a face mai convenabil să facem distincția între fișierele paginii site-ului și fișierele fragmentelor acestora pe care le includem în ele, fișierele incluse de obicei adaugă o particulă inc la nume. Luând în considerare această abordare în exemplul nostru, am obține fișierul header.inc.php și așa mai departe din fișierul header.php. Această abordare poate simplifica foarte mult înțelegerea structurii site-ului în viitor.
  • Codul din fișierul pe care îl includem moștenește domeniul de aplicare al liniei în care este inclus. Deci, doar că în interiorul paginii va avea o zonă globală, iar în interiorul funcției va avea o zonă locală.
  • Putem folosi include cu require oriunde dorim. Chiar și în interiorul scripturilor.
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 în șablon. Pe lângă numele fișierului descă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 găsite în documentația Smarty.

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

2. Funcția de captură

Sintaxă:

(capture name="bloc_name"
assign="variable_name")...
(/captură)

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

Tot ceea ce este î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 prin variabila specială $smarty.capture.varname, unde varname este valoarea transmisă atributului name al funcției de captură. Dacă nu este specificat un nume de variabilă, va fi folosit numele implicit.

Al doilea parametru de atribuire specifică numele variabilei căreia îi va fi atribuită 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"
loop="variable_to_calculate_number_of_iterations"
[[,start="start_position_index"]
[, step="pas"] [,max="maximum_iterations"]
[,show="show_section"] )...
(/secțiune)

Secțiunea este o buclă pentru parcurgerea elementelor unui tablou. Parametrii necesari sunt name, care stabilește numele secțiunii și loop, care este o variabilă care determină numărul de iterații ale buclei.

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

(numele secțiunii=buclă de artă=$titlu)

Titlu: ($title)

(/secțiune)

Exemplul 15.8. Buclă pentru a parcurge elementele matricei

4. pentru fiecare funcție

Sintaxă:

(foreach from="array_name"
item="current_item_name")
...(/pentru fiecare)

În plus, puteți utiliza cheia de atribute suplimentare - numele cheii pentru elementul de matrice curent ș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 similar cu bucla foreach din PHP.
(foreach from=$articole item=art)
Titlu: ($art)

(/pentru fiecare)

Exemplul 15.9. bucla foreach

buclele foreach au propriile lor proprietăți. Ele pot fi accesate astfel: ($smarty.foreach.foreachname.varname) unde foreachname este numele buclei dat de parametrul nume, iar varname este numele proprietății.

5. If, elseif, else declarație

Sintaxă:

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

Funcționarea operatorului este aproape similară cu operatorul if...elseif...else din PHP.

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. Si cine esti tu?
(/dacă)

Exemplul 15.10. Operatori if, elseif, else

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

). Fiecare etichetă (secțiune) trebuie să aibă o pereche (/secțiune). Parametrii necesari sunt NumeȘi buclă. Numele ciclului (secțiunii) poate fi orice constând din litere, cifre și caractere de subliniere. Cicluri (secțiune) pot fi imbricate, iar numele secțiunilor imbricate trebuie să fie unice unul pentru celălalt. Variabil buclă(de obicei o matrice de valori) determină numărul de iterații ale buclei. Când imprimați variabile într-o secțiune, numele secțiunii trebuie scris lângă numele variabilei în paranteze pătrate. (alta sectiune) este executat dacă parametrul buclă nu contine valori.

Numele atributului Tip Necesar Mod implicit Descriere
Nume şir da N / A Numele secțiunii
buclă amestecat da N / A O valoare care specifică 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 pornire va fi 5. Valorile nevalide (valorile din afara matricei) sunt tăiate automat la cea mai apropiată valoare validă.
Etapa întreg Nu 1 Valoarea pasului folosită pentru a parcurge matricea. De exemplu, pasul=2 indică parcurgerea tabloului 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 versiunea 1.5.0 Smarty, sintaxa variabilei proprietății sesiunii 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 atributul start dacă a fost specificat unul) și incrementând cu unu (sau valoarea atributului step, dacă a fost specificat unul).

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 și nu la 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 de la unu, nu de la zero, cum ar fi indici. rownum este un sinonim pentru proprietatea de iterație, funcționează la fel.

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

assign("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 rulării 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 antetul tabelului la fiecare cinci linii (folosind (if) cu operatorul mod).

(numele secțiunii=co loop=$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)