Fiecare Controler cu acțiune unică este reprezentat de o clasă dedicată sau de închidere.

Acțiunea face doar aceste lucruri:

  • colectează intrări din solicitarea HTTP (dacă este necesar)
  • invocă Domeniu cu acele intrări (dacă este necesar) și păstrează rezultatul
  • construiește un răspuns HTTP (de obicei cu rezultatele invocării domeniului).

Toate celelalte logici, inclusiv toate formele de validare a intrărilor, tratarea erorilor și așa mai departe, sunt, prin urmare, împinse din acțiune și în Domeniu (pentru problemele legate de logica domeniului) sau redarea de răspuns (pentru problemele privind logica de prezentare).

Un răspuns ar putea fi redat la HTML (de exemplu, cu Twig) pentru o cerere web standard; sau poate fi ceva de genul JSON pentru cererile API RESTful.

Notă: Închiderile (funcțiile) ca handler de rutare sunt destul de „scumpe”, deoarece PHP trebuie să creeze toate închiderile la fiecare cerere. Utilizarea denumirilor claselor este mai ușoară, mai rapidă și se adaptează mai bine pentru aplicații mai mari.

Redarea unui șablon Twig

Scrierea JSON la răspuns

În loc să apelați de fiecare dată json_encode, puteți utiliza metoda de răspuns json () pentru a reda răspunsul.

Răspuns

Conform ADR ar trebui să existe un răspuns pentru fiecare acțiune. În majoritatea cazurilor, un răspuns generic (a se vedea Responder.php) este suficient de bun. Desigur, puteți adăuga clase speciale de răspuns și puteți muta logica completă de prezentare acolo. O clasă de răspuns suplimentară ar avea sens atunci când se construiește un strat de transformare pentru ieșirea de date complexă (json sau xml). Acest lucru ajută la separarea logicii de prezentare de logica domeniului.

Cerere și răspuns

O prezentare rapidă a ciclului de solicitare/răspuns:

Antrenament minute înainte

Solicitările trec prin stiva middleware (în și în afara):

Solicitare> Controler frontal> Rutare> Middleware> Acțiune> Middleware> Răspuns

Iată un flux de solicitări HTTP complet detaliat și înapoi la răspuns: