Cum funcționează furnizorii de servicii și containerele de servicii folosind laravel?
Publicat: 2022-09-16Laravel poate fi uneori foarte greu de tratat chiar și pentru dezvoltatorii experimentați, deoarece funcționalitatea de bază este greu de înțeles. Dar într-adevăr, dezvoltarea web este interesantă.
Una dintre funcționalități este Furnizorii de servicii, despre care voi oferi o prezentare detaliată în acest blog. De asemenea, voi explica în acest blog cum funcționează un container de service în laravel.
Acestea sunt mai simple decât v-ați fi imaginat. Acestea fiind spuse, să intrăm direct în asta.
Ce sunt furnizorii de servicii în laravel?
Furnizorii de servicii dintr-o aplicație Laravel servesc ca punct central de la care aplicația este bootstrap. Ca rezultat, furnizorii sunt folosiți pentru a injecta serviciile de bază ale laravel în containerul de servicii, precum și serviciile aplicației noastre, clasele și dependențele acestora în containerul de servicii.
Furnizorul pentru acest exemplu poate fi găsit în config/app.php ca o matrice numită „providers”. Consultați imaginea de mai jos:
Să presupunem că doriți să utilizați orice furnizor de servicii terță parte, atunci trebuie să aplicați în configurația matricei de furnizori de servicii.
Puteți vedea unii furnizori de servicii care rulează deja întreaga aplicație, de exemplu, Auth, care este necesar pentru autentificarea aplicației.
Cum se creează furnizori de servicii în laravel?
Pentru a utiliza un furnizor de servicii, mai întâi trebuie să creați unul. Drept urmare, vom configura un furnizor de servicii chiar acum. Puteți utiliza comanda furnizată mai jos pentru a crea orice furnizor de servicii de care aveți nevoie.
php artisan make:provider MyServiceProvider
Când executați comanda, în aplicația dvs. va fi creat un furnizor de servicii, pe care îl puteți utiliza apoi.
După aceea, deschideți aplicația și navigați la folderul furnizori, unde vă veți găsi furnizorul de servicii.
Aici veți vedea două metode, register() și boot().
Metoda register().
Este foarte important să știm că metoda register() ne permite să definim legături la containerul nostru de servicii. De exemplu, vezi codul de mai jos:
$this->app este o variabilă globală în laravel care poate accesa o clasă singleton prin intermediul aplicației.
Singleton este o trăsătură. Când aplicați această trăsătură, informați aplicația că orice clasă este trimisă ca parametru în aplicație ar trebui să aibă un singur duplicat (instanță) în întreaga aplicație. Aceasta înseamnă că MyClass va fi rezolvată o dată și va avea o singură instanță, care poate fi accesată folosind variabila my_class.
Metoda boot().
Metoda boot() vă permite să accesați toate serviciile care au fost înregistrate anterior folosind metoda register. Astfel, puteți include întregul serviciu în aplicația dvs. utilizând această metodă.
Cum să înregistrezi un furnizor de servicii?
Deoarece acum v-ați creat furnizorul de servicii, va trebui să îl înregistrați în fișierul de configurare pentru a finaliza procesul. Trebuie să vă înregistrați aici în modul descris în imaginea de mai jos:

Toți furnizorii de servicii se vor încărca mai întâi de fiecare dată când aplicația este rulată. Furnizorii de servicii sunt principalul loc central pentru aplicațiile Laravel și sunt întotdeauna acolo pentru a vă ajuta să rulați aplicația completă, așa cum sa discutat anterior în acest blog.
Ce sunt containerele de serviciu în laravel?
Containerul de servicii este un mecanism puternic care ne permite să stocăm toate legăturile necesare pentru a executa o aplicație Laravel pe un singur server.
Totul din aplicație poate fi legat împreună cu ajutorul unui container de service.
Cum se utilizează containerul de serviciu în Laravel?
Luați în considerare următorul scenariu: avem o clasă numită MathService care este responsabilă pentru efectuarea anumitor operațiuni fundamentale precum adunarea, înmulțirea și așa mai departe. Codul pentru această clasă este furnizat mai jos.
După cum puteți vedea mai sus, există două metode de calculare a sumei numerelor folosind funcția de sumă matrice și de înmulțire a tuturor numerelor furnizate ca matrice folosind funcția de produs matrice.
Funcția array sum calculează suma de numere matrice folosind funcția array sum, în timp ce funcția de produs matrice înmulțește toate numerele furnizate ca matrice.
Pentru a utiliza furnizorul de servicii, trebuie mai întâi să legăm serviciul de containerul de servicii.
Totuși, făcând acest lucru, îi instruim Laravel să păstreze containerul MathService în containerul cu numele MathService și să-l returneze ori de câte ori avem nevoie de o instanță a unei clase. Aceasta este o legare unică a unei clase și poate fi folosită pentru a obține orice număr de instanțe din programul nostru.
După cum sa menționat anterior, containerele și furnizorii de servicii sunt componente esențiale ale fiecărei aplicații Laravel. După cum sa menționat anterior, ne putem proiecta proprii furnizori de servicii unici sau putem încorpora furnizori de servicii terți în aplicațiile noastre.
De exemplu, dacă doriți să utilizați socialite în Laravel, îl puteți copia și lipi în fișierul furnizorului de servicii de aplicație și îl puteți utiliza oriunde în aplicația dvs.
Rezumând
Când vă configurați aplicația, sunt utilizați furnizori de servicii. În plus față de legăturile containerului de servicii, în această secțiune a fișierului de configurare sunt înregistrate și alte elemente cheie, cum ar fi rute, middleware și ascultători de evenimente.
Furnizorii de servicii sunt efectuate înainte ca cererea în sine să fie procesată, asigurându-se că tot ceea ce doriți este pus la punct și configurat înainte ca cererea să fie tratată de către sistem. Executarea unor furnizori de servicii are loc în mod regulat, în timp ce alți furnizori de servicii sunt efectuate doar atunci când sunt solicitați („furnizori întârziați”).
Când utilizați un container de servicii, îl puteți utiliza pentru injectarea de dependență (de exemplu, injectarea parametrilor în clasele dvs. de controler), precum și pentru clasele de legare și rezoluție (cum ar fi ce clasă să instanțiați pentru un anumit contract).
Dezvoltarea web poate fi un proces dificil. De aceea, webdew are o echipă de dezvoltatori web calificați pentru a vă ajuta să faceți site-uri web și aplicații și să vă ușureze lucrurile.
Ai nevoie de o mână de ajutor cu designul web și dezvoltarea web? Contactează-ne!
Editor: Amrutha