Glosar de termeni

AJAX

Asynchronous JavaScript and XML – tehnologie de schimb de informații între client și server prin protocolul HTTP fără a fi necesară reîncărcarea întregii pagini la fiecare cerere. Deși numele ar putea sugera că trimite date doar în format XML, se utilizează în mod obișnuit și formatul JSON.

Acțiune presenter

Partea logică a presenterului care execută o singură acțiune. De exemplu, afișează pagina produsului, deconectează utilizatorul etc. Un presenter poate avea mai multe acțiuni.

BOM

Așa-numitul byte order mark este un caracter special la începutul fișierului, care se utilizează ca indicator al ordinii octeților în codificare. Unele editoare îl inserează în fișiere. Este practic invizibil, dar cauzează probleme cu trimiterea ieșirii și a antetelor din PHP. Pentru eliminarea în masă puteți utiliza Code Checker.

Controller

Controlerul care procesează cererile utilizatorului și, pe baza acestora, apelează logica aplicației corespunzătoare (adică modelul) și apoi solicită view-ului să redea datele. Echivalentul controllerelor în Nette Framework sunt presenterele.

Cross-Site Scripting (XSS)

Cross-Site Scripting este o metodă de compromitere a paginilor web care exploatează ieșirile neprocesate. Atacatorul poate apoi injecta propriul cod în pagină și astfel poate modifica pagina sau chiar obține date sensibile despre vizitatori. Protecția împotriva XSS se poate realiza doar prin procesarea consecventă și corectă a tuturor șirurilor.

Nette Framework vine cu o tehnologie revoluționară Escapare sensibilă la context, care vă scapă pentru totdeauna de riscul Cross-Site Scripting. Toate ieșirile sunt procesate automat, astfel încât nu se poate întâmpla ca un coder să uite ceva.

Cross-Site Request Forgery (CSRF)

Atacul Cross-Site Request Forgery constă în faptul că atacatorul ademenește victima pe o pagină care execută discret în browserul victimei o cerere către serverul pe care victima este conectată, iar serverul crede că cererea a fost executată de victimă din proprie inițiativă. Astfel, sub identitatea victimei, se efectuează o anumită acțiune fără ca aceasta să știe. Poate fi vorba de modificarea sau ștergerea datelor, trimiterea unui mesaj etc.

Nette Framework protejează automat formularele și semnalele în presentere împotriva acestui tip de atac. Și anume, împiedicând trimiterea sau declanșarea lor dintr-un alt domeniu.

Dependency Injection

Dependency Injection (DI) este un pattern de design care spune cum să se separe crearea obiectelor de dependențele lor. Adică, clasa nu este responsabilă pentru crearea sau inițializarea dependențelor sale, ci în schimb aceste dependențe îi sunt furnizate de cod extern (acesta poate fi și un container DI). Avantajul constă în faptul că permite o mai mare flexibilitate a codului, o mai bună inteligibilitate și o testare mai ușoară a aplicației, deoarece dependențele sunt ușor de înlocuit și izolate de celelalte părți ale codului. Mai multe în capitolul Ce este Dependency Injection?

Container Dependency Injection

Containerul Dependency Injection (de asemenea, container DI sau container IoC) este un instrument care se ocupă de crearea și gestionarea dependențelor în aplicație (sau servicii). Containerul are de obicei o configurație care definește ce clase sunt dependente de alte clase, ce implementări concrete ale dependențelor trebuie utilizate și cum trebuie create aceste dependențe. Apoi, containerul creează aceste obiecte și le furnizează claselor care au nevoie de ele. Mai multe în capitolul Ce este un container DI?

Escapare

Escaparea este conversia caracterelor care au o semnificație specială într-un context dat în alte secvențe corespunzătoare. Exemplu: într-un șir delimitat de ghilimele dorim să scriem ghilimele. Deoarece ghilimelele au o semnificație specială în contextul șirului și simpla lor scriere ar fi înțeleasă ca sfârșitul șirului, este necesar să le scriem folosind o altă secvență corespunzătoare. Care anume este determinată de regulile contextului.

Filtru (anterior helper)

În șabloane, sub termenul filtru se înțelege de obicei o funcție care ajută la modificarea sau reformatarea datelor în forma finală. Șabloanele dispun de mai multe filtre standard.

Invalidare

Notificarea snippet-ului pentru a se redesena. Într-un alt sens, și ștergerea conținutului cache-ului.

JSON

Format pentru schimbul de date derivat din sintaxa JavaScript (este un subset al acesteia). Specificația exactă o găsiți pe pagina www.json.org.

Componentă

Parte reutilizabilă a aplicației. Poate fi o parte vizuală a paginii, așa cum descrie capitolul Scrierea componentelor, sau sub termenul de componentă se înțelege și clasa Component (o astfel de componentă nu trebuie să fie vizuală).

Caractere de control

Caracterele de control sunt caractere invizibile care pot apărea în text și eventual pot cauza probleme. Pentru eliminarea lor în masă din fișiere puteți utiliza Code Checker și pentru eliminarea dintr-o variabilă funcția Strings::normalize().

Evenimente

Un eveniment este o situație așteptată într-un obiect, care, atunci când apare, apelează așa-numiții handleri, adică callback-uri care reacționează la eveniment (exemplu). Un eveniment poate fi, de exemplu, trimiterea unui formular, conectarea unui utilizator etc. Evenimentele sunt astfel o formă de Inversion of Control.

De exemplu, conectarea utilizatorului are loc în metoda Nette\Security\User::login(). Obiectul User are o variabilă publică $onLoggedIn, care este un array în care oricine poate adăuga un callback. În momentul în care utilizatorul se conectează, metoda login() apelează toate callback-urile din array. Numele variabilei în forma onXyz este o convenție utilizată în întregul Nette.

Latte

Unul dintre cele mai avansate sisteme de șabloane.

Model

Modelul este baza de date și, în special, funcțională a întregii aplicații. Conține întreaga logică a aplicației (se utilizează și termenul de logică de business). Este acel M din MVC sau MVP. Orice acțiune a utilizatorului (conectare, adăugarea unui produs în coș, modificarea unei valori în baza de date) reprezintă o acțiune a modelului.

Modelul își gestionează starea internă și oferă o interfață fixă către exterior. Prin apelarea funcțiilor acestei interfețe, putem interoga sau modifica starea sa. Modelul nu știe de existența view-ului sau a controller-ului.

Model-View-Controller

Arhitectură software care a apărut din nevoia de a separa în aplicațiile cu interfață grafică codul de gestionare (controller) de codul logicii aplicației (model) și de codul care afișează datele (view). Astfel, aplicația devine mai clară, facilitează dezvoltarea viitoare și permite testarea separată a componentelor individuale.

Model-View-Presenter

Arhitectură, derivată din Model-View-Controller.

Modul

Modulul reprezintă o parte logică a aplicației. Într-o structură tipică, este vorba de un grup de presentere și șabloane care abordează un anumit domeniu de funcționalitate. Modulele le plasăm în directoare separate, cum ar fi Front/, Admin/ sau Shop/.

De exemplu, un magazin online îl împărțim în:

  • Frontend (Shop/) pentru vizualizarea produselor și cumpărare
  • Secțiunea client (Customer/) pentru gestionarea comenzilor
  • Administrare (Admin/) pentru operator

Din punct de vedere tehnic, sunt directoare obișnuite, dar datorită structurării clare ajută la scalarea aplicației. Presenterul Admin:Product:List va fi astfel plasat fizic, de exemplu, în directorul app/Presentation/Admin/Product/List/ (vezi maparea presenter-ilor).

Namespace

Spațiu de nume, parte a limbajului PHP începând cu versiunea 5.3 și a altor limbaje de programare, care permite utilizarea claselor denumite la fel în diferite biblioteci, fără a apărea coliziuni de nume. Vezi documentația PHP.

Presenter

Presenterul este un obiect care preia cererea tradusă de router din cererea HTTP și generează răspunsul. Răspunsul poate fi o pagină HTML, o imagine, un document XML, un fișier pe disc, JSON, o redirecționare sau orice altceva vă puteți imagina.

De obicei, sub termenul de presenter se înțelege un descendent al clasei Nette\Application\UI\Presenter. În funcție de cererile primite, execută acțiunile corespunzătoare și redă șabloanele.

Router

Traducător bidirecțional între cererea HTTP / URL și acțiunea presenterului. Bidirecțional înseamnă că din cererea HTTP se poate deduce acțiunea presenter-ului, dar și invers, pentru o acțiune se poate genera URL-ul corespunzător. Mai multe în capitolul despre rutarea URL-urilor.

Cookie-urile SameSite oferă un mecanism pentru a recunoaște ce a condus la încărcarea paginii. Poate avea trei valori: Lax, Strict și None (acesta necesită HTTPS). Dacă cererea pentru pagină vine direct de pe site sau utilizatorul deschide pagina introducând-o direct în bara de adrese sau făcând clic pe un bookmark, browserul trimite serverului toate cookie-urile (adică cu flag-urile Lax, Strict și None). Dacă utilizatorul ajunge pe site printr-un link de pe alt site, se transmit serverului cookie-urile cu flag-urile Lax și None. Dacă cererea apare în alt mod, cum ar fi trimiterea unui formular POST de pe alt site, încărcarea în interiorul unui iframe, folosind JavaScript etc., se trimit doar cookie-urile cu flag-ul None.

Serviciu

În contextul Dependency Injection, ca serviciu se desemnează un obiect care este creat și gestionat de containerul DI. Un serviciu poate fi ușor înlocuit cu o altă implementare, de exemplu în scopuri de testare sau pentru a schimba comportamentul aplicației, fără a fi necesară modificarea codului care utilizează serviciul.

Snippet

Fragment, parte a paginii care poate fi redesenată separat în timpul unei cereri AJAX.

View

View, adică vizualizarea, este stratul aplicației responsabil pentru afișarea rezultatului cererii. De obicei, utilizează un sistem de șabloane și știe cum să afișeze o anumită componentă sau rezultatul obținut din model.

versiune: 4.0