Przewodnik po wstrzyknięciu zależności do kontrolerów

Przewodnik po wstrzyknięciu zależności do kontrolerów


Fasady Laravela przedstawiają prosty interfejs najbardziej przydatnym klasom w bazie kodowej Laravel. Możesz uzyskać informacje o bieżącym żądaniu i danych wejściowych użytkownika, sesji, buforach i wielu innych.

Ale jeśli wolisz wstrzykiwać swoje zależności lub jeśli chcesz skorzystać z usługi, która nie ma fasady, musisz znaleźć sposób na wprowadzenie instancji tych klas do kontrolera.

Wszystkie metody kontrolera (w tym konstruktory) są rozwiązywane z kontenera Laravel, co oznacza wszystko, co tytujesz, że pojemnik wie, jak rozwiązać, zostanie automatycznie wstrzyknięte.

Jako fajny przykład, co, jeśli wolisz mieć instancję obiektu żądania zamiast korzystania z fasad? Po prostu typehint iLuminate \ http \ żądanie w parametrach metody:]

sklep funkcji publicznych (\ ILUMINE \ http \ żądanie $ żądanie)

$ organizacja = nowa organizacja;
$ organizacja-> name = $ request-> input ('name');
$ organizacja-> lata = $ request-> input („lata”);
$ organizacja-> save ();
return przekierowywanie („organizacje”);

Zdefiniowałeś więc parametr, który należy przekazać do metody Store (). A ponieważ go wpisałeś, a ponieważ Laravel wie, jak rozwiązać tę nazwę klasy, będziesz przygotować obiekt żądania do użycia w swojej metodzie bez pracy z Twojej strony. Bez wyraźnego wiązania, nic więcej - jest po prostu jako zmienna żądania $.

Przy okazji, tak naprawdę ja i wielu innych programistów Laravela wolę uzyskać dane wejściowe użytkownika: wstrzyknąć instancję żądania i odczytać wejście użytkownika stamtąd, zamiast polegać na fasadzie wejściowej.