Devloger

Service Providers - Czym są i jak działają?

Service Providers - Laravel

Service Providers w Laravelu

Ostatnio omówiłem zagadnienie Service Container-a. Tak więc naturalną koleją rzeczy przyszedł czas na Service Providers Emotikon uśmiechniętej buźki.

Ponieważ jedno z drugim się wiąże i działa w perfekcyjnej synergii. Albowiem to Service Providers dostarczają wszystko to co dobre do naszego cudownego Service Container-a Emotikon uśmiechniętej buźki.

O co chodzi z tymi Service Providers?

Otóż znajdują się w centrum aplikacji. Dosłownie, ponieważ są to miejsca, w których rejestrujemy wszelkie powiązania (IoC), wydarzenia, middleware czy nawet routing. Głównym zadaniem Service Providers jest właśnie rejestrowanie rzeczy.

Można je podzielić na wbudowane (będące już od początku w świeżej instalacji Laravela), pakietowe (dodatkowe) oraz własne.  Lista wszystkich Service Providers znajduje się w "config/app.php". Jest przechowywana jako tablica. Tam też dodajemy i usuwamy wpisy Emotikon uśmiechniętej buźki. Jest to lista wszystkich Service Providers które zostaną załadowane wraz z aplikacją.

Jak stworzyć Service Providera?

Bardzo prosto Emotikon uśmiechniętej buźki. Ponieważ mamy dostęp do komendy artisana, a mianowicie "php artisan make:provider Provider_Name"

php artisan make:provider RiakServiceProvider

Następnie po jego utworzeniu musimy go zarejestrować poprzez jego wpisanie w tablicę znajdującą się we wcześniej wspomnianym "config/app.php".

'providers' => [
    // Inni Providerzy

    App\Providers\ComposerServiceProvider::class,
],

Rejestracja w Service Providers

Jak już wcześniej wspomniałem, w Service Providers będziemy rejestrować powiązania (IoC), ale należy to robić tylko i wyłącznie w metodzie "register". W tejże metodzie należy obsługiwać tylko i wyłącznie Service Container.

$this->app->singleton(Connection::class, function ($app) {
    return new Connection(config('riak'));
});

A gdzie rejestrujemy resztę rzeczy? Metoda Boot

Od tego jest metoda "boot" Emotikon uśmiechniętej buźki. Jest wywoływana dopiero wtedy, kiedy wszystkie serwisy zostaną zarejestrowane, a to oznacza, że mamy dostęp do całej funkcjonalności frameworka Emotikon uśmiechniętej buźki. Możemy tutaj rejestrować na przykład tzw. View-Composer - czyli funkcja wywoływana w momencie w którym dany widok jest renderowany. Dzięki temu mamy możliwość bezpośrednio powiązać dane z widokiem Emotikon uśmiechniętej buźki.

Przykład z rejestracją view composera:

view()->composer('view', function () {
    //
});

W tej metodzie mamy także dostęp do wstrzykiwania zależności poprzez konstruktor który będzie operował na naszym Service Container. Dostarczy nam to, czego potrzebujemy.

Opóźnianie Providera

Mamy również możliwość opóźnienie ładowania Service Providera. Jest to nawet zalecane, ponieważ zwiększa to znacznie wydajność naszej aplikacji. Ale możemy to zrobić tylko gdy rejestrujemy rzeczy w metodzie "register", a metoda "boot" jest pusta.

Gdy dany Provider zostanie opóźniony oznacza to, że zostanie on zarejestrowany dopiero w momencie kiedy będzie on potrzebny, w przeciwnym razie nie jest on ładowany Emotikon uśmiechniętej buźki. Tak więc jeśli nie jest potrzebny, to nie będzie ładowany przy każdym żądaniu.

Laravel przechowuje listę wszystkich opóźnionych Service Providers i dopiero w momencie gdy są potrzebne zostają załadowane.

Jeśli chcemy by nasz Service Provider został opóźniony, to wystarczy że dodamy do jego klasy właściwość "defer" o wartości "true" oraz dołączymy metodę "provides" która zwróci tablicę zawierającą powiązania rejestrowane przez ten Provider Emotikon uśmiechniętej buźki.

protected $defer = true;

Kończąc

To już wszystko w kwestii Service Providers. Service Container jest pudełkiem które zawiera wszystkie wspaniałości naszej aplikacji a Service Providers do tego pudełka owe rzeczy wrzucają Emotikon uśmiechniętej buźki.

Proste Emotikon uśmiechniętej buźki. Choć zrozumienie tego przychodzi bardzo ciężko adeptom Laravela Emotikon uśmiechniętej buźki. Wyłożyłem jak należy, dziękuję za lekturę i życzę owocnej nauki i pracy w Laravelu Emotikon uśmiechniętej buźki.

Dobrego dnia, Bywaj!

Krystian Bogucki

Podobał Ci się ten artykuł?

Jeśli tak, to zarejestruj się aby otrzymywać powiadomienia o nowych artykułach. Nie ujawnię nikomu Twojego adresu!