Integrare PHP-DI cu Slim

github

Acest pachet configurează Slim să funcționeze cu containerul PHP-DI.

PHP-DI ca container

Cea mai evidentă diferență cu instalarea implicită Slim este că veți utiliza PHP-DI ca container, care are următoarele avantaje:

  • cablare automată
  • format puternic de configurare
  • suport pentru sisteme modulare
  • .

Dacă doriți să aflați mai multe despre tot ce poate oferi PHP-DI, aruncați o privire la introducerea sa.

Controlere ca servicii

În timp ce controlerele dvs. pot fi închideri simple, puteți, de asemenea scrieți-le ca clase și PHP-DI le instanțiază numai atunci când sunt apelate:

Dependențele pot fi apoi injectate în controlerul dvs. folosind cablare automată, fișiere de configurare PHP-DI sau chiar adnotări.

În mod implicit, controlerele Slim au o semnătură strictă: $ request, $ response, $ args. Podul PHP-DI oferă o alternativă mai flexibilă și mai prietenoasă cu dezvoltatorii.

Parametrii controlerului pot fi oricare dintre aceste lucruri:

  • cererea sau răspunsul (parametrii trebuie numiți $ request sau $ response)
  • marcatori de rută
  • atribute de cerere
  • servicii (injectate prin tip-sugestie)

Puteți amesteca și toate aceste tipuri de parametri. Acestea vor fi potrivite cu prioritate în ordinea listei de mai sus.

Cerere sau răspuns de injecție

Puteți injecta cererea sau răspunsul în parametrii controlerului după nume:

După cum puteți vedea, ordinea parametrilor nu contează. Acest lucru permite să omiteți injectarea cererii $ dacă nu este necesară, de exemplu.

Rutați injecția substituentului

După cum puteți vedea mai sus, adresa URL a rutei conține un nume de substituent. Prin simpla adăugare a unui parametru cu același nume la controler, PHP-DI îl va injecta direct.

Solicitați injectarea atributului

După cum puteți vedea mai sus, un middleware setează un atribut de nume. Prin simpla adăugare a unui parametru cu același nume la controler, PHP-DI îl va injecta direct.

Pentru a injecta servicii în controlerele dvs., le puteți scrie ca clase. Dar dacă doriți să scrieți o micro-aplicație folosind închideri, nu trebuie să renunțați nici la injecția de dependență.

Puteți injecta servicii prin sugestii de tip:

Notă: puteți injecta doar servicii pe care le puteți tasta-sugestie și pe care PHP-DI le poate oferi. Injecția tip-sugestie este simplă, injectează pur și simplu rezultatul $ container-> get (/ * clasa tip-sugerată * /) .