Guida alle dipendenze iniettate nei controller

Guida alle dipendenze iniettate nei controller


Le facciate di Laravel presentano una semplice interfaccia alle classi più utili nella base di codice di Laravel. È possibile ottenere informazioni sulla richiesta corrente e l'input dell'utente, la sessione, la cache e molto altro.

Ma se preferisci iniettare le tue dipendenze o se vuoi utilizzare un servizio che non ha una facciata, dovrai trovare un modo per portare istanze di queste classi nel tuo controller.

Tutti i metodi del controller (compresi i costruttori) vengono risolti dal contenitore di Laravel, il che significa che tutto ciò che si digita che il contenitore sa come risolvere verrà automaticamente iniettato.

Come bel esempio, cosa succede se preferissi avere un'istanza dell'oggetto richiesta invece di usare la facciata? Basta typehint iluminate \ http \ richiesta nei parametri del metodo:]

negozio di funzioni pubbliche (\ illuminate \ http \ richiesta $ richiesta)

$ organizzazione = nuova organizzazione;
$ organizzazione-> name = $ request-> input ('name');
$ organizzazione-> anni = $ request-> input ('years');
$ organizzazione-> salva ();
RETURN REIRIRECT ("Organizzazioni");

Quindi, hai definito un parametro che deve essere passato nel metodo Store (). E dal momento che l'hai digitato, e poiché Laravel sa come risolvere quel nome di classe, avrai l'oggetto richiesto pronto per te da utilizzare nel tuo metodo senza lavoro da parte tua. Nessun legame esplicito, nessun altro - è lì solo come variabile di richiesta $.

A proposito, questo è in realtà il modo in cui io e molti altri sviluppatori di Laravel preferiscono ottenere l'input dell'utente: iniettare un'istanza della richiesta e leggere l'input dell'utente da lì, invece di fare affidamento sulla facciata di input.