Programare în PHP. A șaptea ediție. Lucrul cu șabloanele. Dezvoltați-vă propria soluție și folosiți soluțiile existente.
În această problemă, vom vorbi despre lucruri cum ar fi șabloanele - ce este, de ce este nevoie și de ce aproape toate sunt folosite. Dar mai întâi, ca de obicei, niște știri.
Și vestea este că versiunea de PHP 4.1.0. despre crearea căruia am vorbit în ediția precedentă a ieșit. Adevărul până acum este disponibil doar sub forma codului sursă (de exemplu, binarele din ferestrele de descărcare de pe www.php.net căutare sunt inutile pentru moment). Apropo, printre altele, utilizatorii de PHP de pe platforma Windows vor fi mulțumiți de faptul că dezvoltatorii PHP din această versiune vorbește despre această versiune mult mai rapidă și mai stabilă în Windows. Puteți vedea lista completă a modificărilor anunțului oficial (în limba engleză). Cereți o nouă versiune de PHP la www.php.net și www.php4win.com.
Și acum înapoi la subiectul acestei probleme.
Ce sunt șabloanele
După cum știți deja (acest lucru a fost menționat în prima ediție), PHP este un limbaj încorporat. Ie codul său este plasat în interiorul paginii HTML și este implicat în generarea de conținut dinamic. Voi da cel mai simplu exemplu:
Deci, șabloanele reprezintă un mecanism care vă va permite să scăpați mai mult sau mai puțin de legătura strânsă a codului dvs. cu aspectul site-ului dvs. și să vă ajutați să facilitați sarcina de a genera pagini dinamice de cod HTML. Ideea principală a acestui mecanism este de a avea o mulțime de "piese" de cod HTML, din care apoi, ca din cuburile designerului, să colectezi orice pagină a site-ului tău.
Cele mai simple șabloane
Cea mai simplă modalitate de a utiliza tempatele este de a crea mai multe variabile care conțin biți de cod HTML. Codul paginii în sine este implicat în unificarea codului HTML din aceste variabile cu datele necesare obținerii rezultatului. Să vedem, de exemplu, cum poate arăta generarea aceleiași pagini utilizând cele mai simple șabloane. Aici nu am folosit nici unul dintre pachetele comune, pentru că vreau doar să vă arăt ideea principală.
Fișierul templates.php conține o descriere a tuturor șabloanelor necesare. Dacă vă uitați la conținutul variabilelor descrise în acest fișier, puteți observa că aceasta este aceeași pagină, dar este împărțită în mai multe părți, între care trebuie introduse date.
Fișierul index.php conține codul de construire a paginii
Desigur, acest cod pare a fi groaznic și așa (sper), de fapt, nimeni nu o face. Dar ideea de bază a "colectării" codului HTML al paginii din piese, acest exemplu demonstrează destul de bine.
De fapt, problema principală cu codul de mai sus este că nu vă permite să eliminați complet codul HTML în interiorul codului PHP, deoarece aici fiecare bucată de cod HTML este stocată într-o variabilă separată. Imaginați-vă cât de mulți ar trebui să aibă astfel de variabile pentru o pagină mai mult sau mai puțin complexă. Și, în plus, în ciuda faptului că codul HTML plasat direct într-un fișier separat, dar relația sa cu rezultatele de cod PHP hardcoded în codul PHP (ca toate de asociere HTML și PHP cod este hardcoded).
Cele mai multe dintre aceste probleme pot fi rezolvate prin utilizarea unui sistem simplu de substituire a datelor în șabloane HTML. Vom lua în considerare unul dintre ele în secțiunea următoare.
Utilizarea șabloanelor cu înlocuirea datelor
Principala diferență între sistemele bazate pe substituția datelor este aceea că permit, folosind o anumită sintaxă, să se determine locurile de inserare a datelor în șabloane HTML. De fapt, toate sistemele disponibile de lucru cu șabloanele se bazează pe acest principiu, iar singurul lucru care le distinge este sintaxa utilizată pentru a specifica șabloanele și setul de posibilități oferite de sistem.
Dar, mai întâi, o scurtă descriere a sintaxei pentru descrierea șabloanelor folosite în acest sistem. Eu o voi aduce în sistemul de tip EBNF și apoi voi da explicațiile necesare.
"Cheie" pentru înlocuire:
Cheia pentru substituție este partea din textul șablonului, care va fi ulterior înlocuită de unele date transmise funcției - manipulatorul de șabloane. Se compune din două părți principale: un nume (unic în cadrul acestui șablon) și o valoare implicită opțională. Acesta va fi folosit dacă șablonul nu a fost setat pe acesta pentru prelucrarea șablonului. În cazul în care valoarea implicită nu a fost specificată, această cheie va fi înlocuită cu un șir gol.
Valoarea implicită poate fi de asemenea utilizată pentru a specifica procesarea specială. Iată trei tipuri de sintaxă diferite care sunt valabile pentru valoarea implicită:
După cum puteți vedea, tipul de procesare pentru valoarea implicită este specificat în primul caracter.
Dacă este un caracter "#". atunci întreaga valoare este tratată ca "inserați rezultatul procesării șablonului cu numele cu parametri presetate ca valori inlocuind pentru cheia. „Ie Șabloanele handler este invocat recursiv pentru a tepmleyta de prelucrare cu numele dat și specificați lista de date de înlocuire, și rezultatele de prelucrare a template-uri vor fi folosite ca valoare pentru substituție.
Dacă este un caracter "!". prelucrarea similară cu cea precedentă, cu singura diferență că, în loc de asteptare șabloane handler produs funcții personalizate de apel cu numele dat și s ca o matrice de date parametru transmis definit în acest fel (structura matrice este aceeași ca și pentru cele mai multe funcții de procesare șabloane ). Funcția de lucru se utilizează ca valoare de înlocuire.
Simbolurile care au un înțeles special pot fi inserate în text folosind secvențele lor de evacuare:
Escaping caractere care au un înțeles special
În afara cheilor pentru înlocuire
Acum, să vedem cum puteți genera aceeași pagină simplă utilizând funcția de mai sus.
Fișierul templates.php conține o descriere a tuturor șabloanelor necesare. Este foarte asemănător cu versiunea anterioară a acestui fișier, dar aici în șabloane se utilizează sintaxa pentru inserarea textului descris mai sus.
Fișierul index.php conține codul de construire a paginii
După cum puteți vedea, codul devine mult mai compact și logic cu utilizarea șabloanelor. Și, în plus, chiar și un astfel de sistem simplu de procesare a șabloanelor vă simplifică mult munca. Veți avea ocazia să controlați separat și separat logica programului - partea vizuală pe care am realizat-o.
Sisteme de lucru cu șabloane
Așa cum am spus mai înainte, funcția pe care am folosit-o în secțiunea anterioară pentru procesarea șabloanelor este prea simplă pentru a revendica rolul unui sistem real adecvat pentru utilizare practică. Dar pe Internet puteți găsi multe sisteme similare de grade diferite de "sofisticare". Voi da doar câteva:
Din punct de vedere istoric, unul dintre primele astfel de sisteme a fost FastTemplate. Este scris pentru PHP3 și se pare că, în momentul de față, nu mai este suportat. Toate celelalte variază în complexitatea și puterea sintaxei pe care o susțin în interiorul Temliților, precum și disponibilitatea unor servicii suplimentare.
Cel mai puternic sistem în acest moment pare să fie Smarty. În plus față de un limbaj suficient de puternic și flexibil (precum și a dezvoltat sintaxa, altele decât apelul în opinia mea, limba este pur și simplu imposibil), le-a mulțumit, de asemenea, caracteristicile care le deosebesc de numărul total de sisteme de procesare a template-uri disponibile în acest moment. Caracteristica cea mai remarcabilă este capacitatea de a "compila" șabloane direct în script-uri PHP! Ie odată ce face parsarea șablonului, Smarty generează un script PHP, care mai târziu efectuează aceeași lucrare mult mai rapid.
Deoarece eu nu folosesc nici unul dintre sistemele de procesare a șabloanelor, preferând tehnologiile XML, vă dau posibilitatea de a încerca să comparați diferitele sisteme și de a alege cel care este cel mai potrivit pentru dvs.
Vă reamintesc că puteți descărca codul sursă al tuturor exemplelor date în acest articol sub formă de arhivă ZIP.
concluzie
În viitor, vom lua în considerare o alternativă la sistemele de șabloane - tehnologii XML și XSLT. Aceste tehnologii sunt standardele W3C și, prin urmare, au o mulțime de suport, o cantitate imensă de documentație și exemple, o mulțime de programe pentru a lucra cu datele în aceste formate, a le crea, a le verifica etc. PHP are, de asemenea, extensii pentru a lucra cu aceste tehnologii, iar în versiunile viitoare vom analiza modul în care puteți utiliza aceste tehnologii pentru a genera pagini web dinamice.