Guide for å injisere avhengigheter i kontrollere

Guide for å injisere avhengigheter i kontrollere


Laravels fasader presenterer et enkelt grensesnitt for de mest nyttige klassene i Laravels kodebase. Du kan få informasjon om gjeldende forespørsel og brukerinngang, økten, hurtigbuffer og mye mer.

Men hvis du foretrekker å injisere avhengighetene dine, eller hvis du vil bruke en tjeneste som ikke har en fasade, må du finne en måte å ta med forekomster av disse klassene inn i kontrolleren din.

Alle kontrollermetoder (inkludert konstruktørene) blir løst ut av Laravels beholder, noe som betyr at alt du typer som beholderen vet hvordan du løser, blir automatisk injisert.

Som et fint eksempel, hva om du foretrekker å ha en forekomst av forespørselsobjektet i stedet for å bruke fasaden? Bare typhint iluminate \ http \ forespørsel i metodeparametrene dine:]

offentlig funksjonsbutikk (\ Illuminate \ http \ forespørsel $ forespørsel)

$ organisasjon = ny organisasjon;
$ organisasjon-> name = $ request-> input ('name');
$ organisasjon-> år = $ forespørsel-> input ('år');
$ organisasjon-> lagring ();
Return Redirect ('Organisasjoner');

Så du har definert en parameter som må sendes inn i butikken () -metoden. Og siden du typet det, og siden Laravel vet hvordan du kan løse det klassenavnet, vil du ha forespørselsobjektet klart for deg å bruke i metoden din uten arbeid fra din side. Ingen eksplisitt binding, ingen andre - det er bare der som $ forespørsel variabel.

BTW, dette er faktisk hvordan jeg og mange andre Laravel -utviklere foretrekker å få brukeren til brukeren: Injiser en forekomst av forespørselen og les brukerinngangen derfra, i stedet for å stole på inngangsfasaden.