Nette Documentation Preview

syntax
Glosar de termeni
*****************


AJAX .[#toc-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 |#JSON] este adesea utilizat în loc de XML.


Acțiunea prezentatorului .[#toc-presenter-action]
-------------------------------------------------
Parte logică a [prezentatorului |#presenter], 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 |code-checker:] pentru eliminarea în masă.


Controller .[#toc-controller]
-----------------------------
Controlerul procesează cererile de la utilizator și, pe baza acestora, apelează o anumită logică a aplicației (de exemplu, [modelul |#model]), apoi apelează [vizualizarea |#view] pentru redarea datelor. Analogia cu controlorii sunt [prezentatorii |#presenter] din Nette Framework.


Cross-Site Scripting (XSS) .[#toc-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 |latte:safety-first#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) .[#toc-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 .[#toc-dependency-injection]
-----------------------------------------------------
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 |#Dependency Injection container]). 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ță? |dependency-injection:introduction]


Containerul de injecție a dependențelor .[#toc-dependency-injection-container]
------------------------------------------------------------------------------
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 |#service]). 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? |dependency-injection:container]


Evadarea .[#toc-escaping]
-------------------------
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) .[#toc-filter-formerly-helper]
-----------------------------------------------------
Funcție de filtrare. În șabloane, [filtrul |latte:syntax#filters] este o funcție care ajută la modificarea sau la formatarea datelor în forma de ieșire. Șabloanele au mai multe [filtre standard |latte:filters] predefinite.


Invalidare .[#toc-invalidation]
-------------------------------
Notificarea unui [fragment |#snippet] de redat. În alt context, de asemenea, ștergerea unui cache.


JSON .[#toc-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 .[#toc-component]
----------------------------
Parte reutilizabilă a unei aplicații. Poate fi o parte vizuală a unei pagini, așa cum este descrisă în capitolul [application:components], sau termenul poate reprezenta și clasa [Component |component-model:] (o astfel de componentă nu trebuie să fie neapărat vizuală).


Caractere de control .[#toc-control-characters]
-----------------------------------------------
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 |code-checker:], iar pentru eliminarea lor dintr-o variabilă utilizați funcția [Strings::normalize() |utils:strings#normalize].


Evenimente .[#toc-events]
-------------------------
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":https://gist.github.com/dg/332cdd51bdf7d66a6d8003b134508a38). 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 .[#toc-latte]
-------------------
Unul dintre cele mai inovatoare [sisteme de șabloane |latte:] din toate timpurile.


Model .[#toc-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 **M**VC 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 |#view] sau a unui [controler |#controller], modelul este total independent de acestea.


Model-Vizualizare-Controler .[#toc-model-view-controller]
---------------------------------------------------------
Arhitectură software, apărută în dezvoltarea aplicațiilor GUI pentru a separa codul pentru controlul fluxului ([controler |#controller]) de codul logicii aplicației ([model |#model]) și de codul de redare a datelor ([view |#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 .[#toc-model-view-presenter]
-------------------------------------------------
Arhitectură bazată pe [Model-View-Controller |#Model-View-Controller].


Modul .[#toc-module]
--------------------
[Modulul |application:modules] î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:
1) Catalog de produse cu coș.
2) Administrare pentru client.
3) Administrare pentru comerciant.


Spațiul de nume .[#toc-namespace]
---------------------------------
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 |https://www.php.net/manual/en/language.namespaces.rationale.php].


Prezentator .[#toc-presenter]
-----------------------------
Prezentatorul este un obiect care preia [cererea |api:Nette\Application\Request] tradusă de către router din cererea HTTP și generează un [răspuns |api:Nette\Application\Response]. 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 [api:Nette\Application\UI\Presenter]. Prin cereri, acesta execută [acțiunile |application:presenters#life-cycle-of-presenter] corespunzătoare și redă șabloanele.


Router .[#toc-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 |#presenter action] 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 |application:routing].


Cookie SameSite .[#toc-samesite-cookie]
---------------------------------------
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 .[#toc-service]
-------------------------
Î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 .[#toc-snippet]
--------------------------
Fragment de pagină, care poate fi redat separat în timpul unei cereri [AJAX |#AJAX].


Vizualizare .[#toc-view]
------------------------
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.



{{leftbar: www:@menu-common}}
{{priority: -2}}

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:

  1. Catalog de produse cu coș.
  2. Administrare pentru client.
  3. 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-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.