Șabloane în php

Sursa șablonului

Logica aplicației și logica afișajului

Această operație necomplicată poate fi denumită pe bună dreptate logica de afaceri sau logica aplicației. Cu alte cuvinte, aceasta este esența programului. Nimic mai mult din program nu este necesar, cu excepția modului în care se calculează suma a două termeni. În cele din urmă, acest program (presupunând că valorile variabilelor $ a și $ b sunt definite) poate obține două tipuri diferite de valori - fie zero, fie un număr negativ sau pozitiv.







Deoarece programul este folosit în web, ar fi logic pentru a da rezultatul punerii sale în aplicare în formă de HTML. În același timp, aș dori să aplice o anumită logică în ieșirea codului HTML - dacă rezultatul nu este egal cu zero - tipăriți rezultatul cu un text albastru, în caz contrar ieșiți mesajul în roșu, pe care le spun rău, "bagel", scotură zero.

Să luăm în considerare decizia problemei date de începător. Novice-ul nu a auzit nimic despre separarea codului php al script-ului din codul HTML al șablonului și probabil va scrie programul astfel:

Ce greșeli a făcut începătorul? El a amestecat codul PHP (logica aplicației) și logica de afișare. Ce este Display Logic? Această condiție se află în structura de control if-else, care transmite codul HTML în funcție de rezultatul obținut. Logica mapării nu este legată de logica aplicației. nici măcar nu știe cum sa obținut rezultatul - prin adăugarea a două variabile sau prin algoritmi matematici complexe, urmate de eșantioane din baza de date și cereri către un server terță parte. Nu îi pasă, logica cartografierii este o altă sarcină - pentru a arăta utilizatorului rezultatul programului.

Notă: printre altele, începătorul a adus HTML prin ecou prin încapsularea codului HTML în ghilimele duble, ceea ce a condus la scăparea de citate duble în codul HTML. Sa dovedit un amestec de cod HTML și PHP, greu de citit, greu de întreținut și complet nu frumos.

Acum imaginați-vă că un începător a scris un întreg magazin online într-un stil similar, amestecând probele din baza de date, algoritmi și HTML. Apoi, designerul de layout a trebuit să schimbe o parte semnificativă a codului HTML și voila - codul nu poate fi acceptat, nu numai de coder, ci de programator însuși. Logica de afaceri se împletește în logica cartografierii, amestecată într-o grămadă de cai, oameni.

Mai devreme sau mai târziu, programatorul web începe să devină mai experimentat și ajunge la înțelegerea faptului că este încă necesar să separăm codul HTML de codul PHP. Forumurile Proshtudirovan și unele manuale (și poate chiar și pe propria lor ingeniozitate), programatorul scrie un program care se află în codul de șablon HTML, în locul anumitor etichete, cum ar fi% var% sau. înlocuiește valorile obținute din scriptul PHP:

Ce se întâmplă? Cadrul principal al paginii este într-un fișier separat și nu mai este asociat cu cod PHP, este mai bine. Dar scriptul script.php are încă un cod HTML și o logică de afișare. Se pare că a fost schimbat "sapun". HTML este acum răspândit atât pe scriptul, cât și pe șablonul principal, care nu este foarte diferit de codul "Începător" din exemplul de mai sus.







Următorul pas este etapa terminală, când programatorul, în încercarea de a separa PHP de HTML, începe să scrie propriul motor de șablon - un set de reguli pentru șablon care ar putea efectua cel puțin operații logice minime cu date obținute din scriptul PHP:

Șablonul arată acum:

Un construct asemănător IF apare în șablon, procesat de șablonul personalizat super_mega_template_engine. Și se pare că funcționează - imprimă valoarea în funcție de valoarea variabilei corporale. Dar atunci distracția începe - cu complexitatea logicii de afișare, trebuie să creați structuri în șablon care manipulează arrays - bucle. Sintaxa trivială IF-like începe să fie ratată - nivelurile cuiburilor și multe altele sunt necesare. În cele din urmă, programatorul vine la forum și se întreabă cum să scrie propriul dvs. șablon pe PHP.

Și totul este vorba.

PHP este conceput special pentru dezvoltarea web-ului și codul său poate fi implementat direct în HTML - php.net.

Ce urmează de aici? PHP - în sine nu este doar un limbaj de programare foarte puternic, ci și un motor șablon auto-suficiente. permițând să se facă șabloane calitative fără a afecta logica aplicației. Pentru aceasta, trebuie îndeplinite următoarele condiții:

  • Nu utilizați logica aplicației în șabloane, numai datele primite de la script - scalare, matrice, obiecte - sunt trimise la șabloane. Nu există apeluri către baza de date, algoritmi care nu au legătură cu logica afișajului etc.
  • Utilizați șabloanele structurii de gestionare PHP. necesare pentru logica afișajului - IF / ELSEIF / ELSE, FOR / FOREACH, INCLUDE / REQUIRE.
  • Utilizați o sintaxă alternativă pentru structurile de administrare - face foarte ușor să citiți șabloane HTML.
  • Încercați să nu utilizați funcțiile încorporate în șabloane. Chiar dacă trebuie să aplicați o funcție destul de des utilizată htmlspecialchars în șablon. atunci nu fi prea leneș să-l înfășurați în metoda statică a clasei de ajutor sau în funcție. Aceasta va oferi în viitor mai multe posibilități de refactorizare și va crea pur și simplu un stil unidimensional al API-ului dvs.

Acest stil de șablonare în PHP se numește șablon pur, adică pur șablon bazat pe capabilitățile PHP în sine.

Utilizarea codului șablonului pur al scriptului și șablonului nostru ar putea să arate astfel:

Sunt de acord, este frumos și destul de simplu! Am împărțit logica aplicației și logica afișării. Acum, designerul de layout, care este ușor familiarizat cu structurile de control triviale ale oricărui limbaj de programare, poate păstra cu ușurință cod HTML, iar programatorul nu trebuie să știe nimic despre cum și unde va fi afișat ieșirea programului. Am împărțit responsabilitățile și am creat un cod care este ușor de modificat.

Desigur, exemplul nostru este foarte simplu, dar avantajele șablonului pur sunt foarte vizibile pe proiectele reale.

Un exemplu de șablon este mai complicat: carte de oaspeți, ieșire de înregistrări

De exemplu, este mai dificil să aducem un șablon de cărți de oaspeți care să emită înregistrări din matricea $ paybook_messages. Se afișează înregistrările utilizatorilor înregistrați și neînregistrați. În plus, este posibil să se afișeze mesajul administratorului din cartea de oaspeți (dacă există) sub un anumit mesaj de utilizator.

Matricea conține următoarele chei:

Vizualizarea datelor provenite din exterior

O atenție deosebită merită subiectul analizării datelor. Un ton bun de programare web este de a înregistra datele provenite de la utilizator "ca atare", iar în ieșire, le supune procesării, în funcție de formatul de ieșire necesar. De exemplu, dacă aceasta este o aplicație web standard, atunci trebuie să scăpați de caracterele speciale folosite în HTML prin intermediul funcției htmlspecialchars. care ar împiedica vulnerabilitățile XSS. În schimb, pentru formatul Excel / Word, nu este nevoie să aplicați htmlspecialchars pentru datele din baza de date a aplicației Web. Ie Fiecare format în care vor fi transmise datele dictează propriile reguli pentru prelucrarea acestor date.

Rezultatul afișării în browser:

Legături necesare pentru lectură







Articole similare

Trimiteți-le prietenilor: