Glosar de termeni
AJAX
Asynchronous JavaScript and XML – tehnologie pentru comunicarea client-server prin protocolul HTTP fără a fi necesară reîncărcarea întregii pagini la fiecare solicitare. În ciuda acronimului, formatul JSON este adesea utilizat în loc de XML.
Acțiunea prezentatorului
Parte logică a prezentatorului, care efectuează o acțiune, cum ar fi afișarea unei pagini de produs, deconectarea unui utilizator etc. Un prezentator poate avea mai multe acțiuni.
BOM
Așa-numita mască de ordine a octeților este un prim caracter special al unui fișier și indică ordinea octeților în codificare. Unii editori o includ în mod automat, este practic invizibilă, dar cauzează probleme cu anteturile și trimiterea de ieșire din PHP. Puteți utiliza Code Checker pentru eliminarea în masă.
Controller
Controlerul procesează cererile de la utilizator și, pe baza acestora, apelează o anumită logică a aplicației (de exemplu, modelul), apoi apelează vizualizarea pentru redarea datelor. Analogia cu controlorii sunt prezentatorii din Nette Framework.
Cross-Site Scripting (XSS)
Cross-Site Scripting este o metodă de perturbare a site-ului care utilizează intrări neeșalonate. Un atacator își poate injecta propriul cod HTML sau JavaScript și poate schimba aspectul paginii sau chiar colecta informații sensibile despre utilizatori. Protecția împotriva XSS este simplă: scăparea consecventă și corectă a tuturor șirurilor de caractere și intrărilor.
Nette Framework vine cu o tehnologie nouă, Context-Aware Escaping, care vă va scăpa pentru totdeauna de riscurile Cross-Site Scripting. Aceasta evadează automat toate intrările pe baza unui anumit context, astfel încât este imposibil ca un programator să uite ceva din greșeală.
Cross-Site Request Forgery (CSRF)
Un atac Cross-Site Request Forgery constă în faptul că atacatorul atrage victima să viziteze o pagină care execută în tăcere o cerere în browserul victimei către serverul unde victima este conectată în acel moment, iar serverul crede că cererea a fost făcută de victimă în mod voit. Serverul execută o anumită acțiune sub identitatea victimei, dar fără ca victima să își dea seama de acest lucru. Poate fi vorba de modificarea sau ștergerea datelor, trimiterea unui mesaj etc.
Nette Framework protejează automat formularele și semnalele din prezentatori împotriva acestui tip de atac. Acest lucru se face prin împiedicarea trimiterii sau apelării lor din alt domeniu.
Injectarea dependențelor
Injecția de dependență (DI) este un model de proiectare care vă spune cum să separați crearea obiectelor de dependențele lor. Altfel spus, o clasă nu este responsabilă pentru crearea sau inițializarea dependențelor sale, ci aceste dependențe sunt furnizate de un cod extern (care poate include un container DI). Avantajul este că permite o mai mare flexibilitate a codului, o mai bună lizibilitate și o testare mai ușoară a aplicației, deoarece dependențele sunt ușor de înlocuit și izolate de alte părți ale codului. Pentru mai multe informații, consultați Ce este injecția de dependență?
Containerul de injecție a dependențelor
Un container de injecție a dependențelor (de asemenea, container DI sau container IoC) este un instrument care se ocupă de crearea și gestionarea dependențelor într-o aplicație (sau servicii). Un container are, de obicei, o configurație care definește ce clase sunt dependente de alte clase, ce implementări specifice ale dependențelor trebuie utilizate și cum să creeze aceste dependențe. Containerul creează apoi aceste obiecte și le furnizează claselor care au nevoie de ele. Pentru mai multe informații, consultați Ce este un container DI?
Evadarea
Escaparea reprezintă conversia caracterelor cu semnificație specială în contextul dat în alte secvențe echivalente.
Exemplu: Dorim să scriem ghilimele în șirul de caractere între ghilimele. Deoarece ghilimelele au o semnificație specială
în contextul șirului închis cu ghilimele, este necesar să se utilizeze o altă secvență echivalentă. Secvența concretă
este determinată de regulile contextului (de exemplu, \"
în șirul de ghilimele din PHP, "
în atributele HTML etc.).
Filtru (fostul Helper)
Funcție de filtrare. În șabloane, filtrul este o funcție care ajută la modificarea sau la formatarea datelor în forma de ieșire. Șabloanele au mai multe filtre standard predefinite.
Invalidare
Notificarea unui fragment de redat. În alt context, de asemenea, ștergerea unui cache.
JSON
Format de schimb de date bazat pe sintaxa JavaScript (este subsetul acesteia). Specificațiile exacte pot fi găsite la www.json.org.
Componenta
Parte reutilizabilă a unei aplicații. Poate fi o parte vizuală a unei pagini, așa cum este descrisă în capitolul components, sau termenul poate reprezenta și clasa Component (o astfel de componentă nu trebuie să fie neapărat vizuală).
Caractere de control
Caracterele de control sunt caractere invizibile, care pot apărea într-un text și care, în cele din urmă, pot cauza unele probleme. Pentru eliminarea lor în masă din fișiere, puteți utiliza Code Checker, iar pentru eliminarea lor dintr-o variabilă utilizați funcția Strings::normalize().
Evenimente
Un eveniment este o situație așteptată în obiect, care, atunci când se produce, se apelează așa-numitele handlers, adică callback-uri care reacționează la eveniment (eșantion). Evenimentul poate fi, de exemplu, trimiterea unui formular, conectarea utilizatorului etc. Evenimentele sunt astfel o formă de Inversie a controlului.
De exemplu, o autentificare a unui utilizator are loc în metoda Nette\Security\User::login()
. Obiectul
User
are o variabilă publică $onLoggedIn
, care este o matrice la care oricine poate adăuga un
callback. De îndată ce utilizatorul se conectează, metoda login()
apelează toate callback-urile din matrice.
Numele unei variabile de forma onXyz
este o convenție utilizată în Nette.
Latte
Unul dintre cele mai inovatoare sisteme de șabloane din toate timpurile.
Model
Modelul reprezintă baza de date și funcții a întregii aplicații. Acesta include întreaga logică a aplicației (denumită uneori și “logică de afaceri”). Este M din MVC sau MPV. Orice acțiune a utilizatorului (logare, introducerea de produse în coș, modificarea unei valori din baza de date) reprezintă o acțiune a modelului.
Modelul își gestionează starea internă și oferă o interfață publică. Prin apelarea acestei interfețe, putem lua sau modifica starea sa. Modelul nu știe de existența unei vizualizări sau a unui controler, modelul este total independent de acestea.
Model-Vizualizare-Controler
Arhitectură software, apărută în dezvoltarea aplicațiilor GUI pentru a separa codul pentru controlul fluxului (controler) de codul logicii aplicației (model) și de codul de redare a datelor (view). În acest fel, codul este mai ușor de înțeles, facilitează dezvoltarea viitoare și permite testarea separată a părților separate.
Model-View-Presenter
Arhitectură bazată pe Model-View-Controller.
Modul
Modulul în Nette Framework reprezintă o colecție de prezentatori și șabloane, eventual și componente și modele, care servesc date unui prezentator. Este deci o anumită parte logică a unei aplicații.
De exemplu, un magazin electronic poate avea trei module:
- Catalog de produse cu coș.
- Administrare pentru client.
- Administrare pentru comerciant.
Spațiul de nume
Namespace este o caracteristică a limbajului PHP începând cu versiunea sa 5.3 și a altor câteva limbaje de programare, de asemenea. Aceasta ajută la evitarea coliziunilor de nume (de exemplu, două clase cu același nume) atunci când se utilizează împreună biblioteci diferite. Pentru mai multe detalii, consultați documentația PHP.
Prezentator
Prezentatorul este un obiect care preia cererea tradusă de către router din cererea HTTP și generează un răspuns. Răspunsul poate fi o pagină HTML, o imagine, un document XML, un fișier, JSON, o redirecționare sau orice altceva la care vă gândiți.
Prin prezentator se înțelege, de obicei, un descendent al clasei Nette\Application\UI\Presenter. Prin cereri, acesta execută acțiunile corespunzătoare și redă șabloanele.
Router
Traducător bidirecțional între cererea HTTP / URL și acțiunea prezentatorului. Bidirecțional înseamnă că nu numai că este posibilă derivarea unei acțiuni de prezentare din cererea HTTP, ci și generarea unui URL corespunzător pentru o acțiune. Pentru mai multe informații, consultați capitolul despre rutarea URL.
Cookie SameSite
Cookie-urile SameSite oferă un mecanism de recunoaștere a ceea ce a dus la încărcarea paginii. Acesta poate avea trei
valori: Lax
, Strict
și None
(acesta din urmă necesită HTTPS). Dacă solicitarea paginii
vine direct de pe site sau dacă utilizatorul deschide pagina tastând direct în bara de adrese sau făcând clic pe un marcaj,
browserul trimite toate cookie-urile către server (adică cu steagurile Lax
, Strict
și
None
). În cazul în care utilizatorul face clic pe site prin intermediul unui link de pe un alt site, cookie-urile
cu stegulețele Lax
și None
sunt transmise serverului. În cazul în care solicitarea este făcută
prin alte mijloace, cum ar fi trimiterea unui formular POST de pe un alt site, încărcarea în interiorul unui iframe, utilizarea
JavaScript etc., sunt trimise numai cookie-uri cu marcajul None
.
Serviciul
În contextul Injecției de dependență, un serviciu se referă la un obiect care este creat și gestionat de un container DI. Un serviciu poate fi înlocuit cu ușurință cu o altă implementare, de exemplu în scopuri de testare sau pentru a schimba comportamentul unei aplicații, fără a fi nevoie să se modifice codul care utilizează serviciul.
Fragmentul
Fragment de pagină, care poate fi redat separat în timpul unei cereri AJAX.
Vizualizare
Vizualizarea este un nivel al aplicației, care este responsabil pentru redarea rezultatelor cererii. De obicei, utilizează un sistem de modelare și știe cum să redea componentele sale sau rezultatele preluate din model.