SlideShare a Scribd company logo
Laravel Jobs
Ulepszony cykl życia i automatyczne wstrzykiwanie
zależności
Robert Kabat
Web Developer
robdevblog@gmail.com
Zdjęcie
Standardowa funkcjonalność
Co dostajemy prosto z pudełka?
● construct - wstrzykiwanie modeli
● handle - dependency injection
To za mało!
Job - czego potrzebowałem?
● możliwości wykonania dodatkowego kodu:
○ zawsze bezpośrednio przed handle()
○ zawsze bezpośrednio po handle()
○ gdy wszystko się uda
○ gdy coś zawiedzie
● dependency injection
● czysty kod (!)
● jednolity kod
Dziedziczenie i “cykl życia”
Job - klasa z super mocami
I - Jak wygląda nowa klasa?
Co się zmieniło?
● run() - zamiast handle()
● nowe funkcje “prosto z pudełka” :
before(), after(), whenSucceeded() oraz
whenFailed()
Co zyskaliśmy?
● zyskaliśmy “lifecycle hooks”
Problem?
Obiecałem dependency injection
● nie ma handle() nie ma DI
Jak to obejść?
● PHP8 i “Attributes” otwierają ciekawą
możliwość bez konieczności robienia
bałaganu
II - Jak wygląda nowa klasa?
Autowire
● Jeden atrybut by wstrzyknąć je
wszystkie!
Korzyści
● klasa zostaje czysta
● wstrzyknięte zależności są widoczne
na pierwszy rzut oka
Jak działa Autowire?
Jak to działa krok po kroku
Atrybut #[Autowire]
Jak działa Autowire?
Jak to działa krok po kroku
Konstruktor rodzica
Jak działa Autowire?
Jak to działa krok po kroku
Autowires
Trait
Jak działa Autowire?
Jak to działa krok po kroku
Klasa atrybutu
Pytania?
robdevblog@gmail.com
Robert Kabat

More Related Content

PDF
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
PDF
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
PDF
Kilka slajdów o castowaniu atrybutów w Eloquent
PDF
Licencje otwartego oprogramowania
PDF
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
PDF
Jak przemycić Shape Up do Scruma?
PDF
Cykl życia zapytania HTTP (pod maską)
PDF
Enumy w Laravelu - dlaczego warto stosować?
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
Kilka slajdów o castowaniu atrybutów w Eloquent
Licencje otwartego oprogramowania
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przemycić Shape Up do Scruma?
Cykl życia zapytania HTTP (pod maską)
Enumy w Laravelu - dlaczego warto stosować?

More from Laravel Poland MeetUp (20)

PDF
Laravelowe paczki do uwierzytelniania
PDF
Przegląd najciekawszych wtyczek do Laravela
PDF
Walidacja w Laravelu
PDF
(prawie) Wszystko o Tinkerze
PDF
Laravel Dusk - prosty przepis na testy E2E
PDF
Laravel Octane - czy na pewno taki szybki?
PDF
Wszystko o Laravel Livewire
PDF
Laravel/PHP - zderzenie z PDFami
PDF
Action-based Laravel
PDF
Automatyzacja utrzymania jakości w środowisku PHP
PDF
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
PDF
Laravel Collection - tablice na sterydach
PDF
Laravel 8.0 - co nowego?
PDF
AOP w Laravel
PDF
Speed up web API with Laravel and Swoole using Docker
PDF
Laravel 6.0 - co nowego?
PDF
Przetwarzanie Asynchroniczne i Promises w Laravel
PDF
KPI w projektach IT
PDF
Jak stworzyliśmy system kudosów w Laravelu i Slacku
PDF
Mikrousługi w allegro
Laravelowe paczki do uwierzytelniania
Przegląd najciekawszych wtyczek do Laravela
Walidacja w Laravelu
(prawie) Wszystko o Tinkerze
Laravel Dusk - prosty przepis na testy E2E
Laravel Octane - czy na pewno taki szybki?
Wszystko o Laravel Livewire
Laravel/PHP - zderzenie z PDFami
Action-based Laravel
Automatyzacja utrzymania jakości w środowisku PHP
Wstęp do Gitlab CI/CD w aplikacjach napisanych w Laravel
Laravel Collection - tablice na sterydach
Laravel 8.0 - co nowego?
AOP w Laravel
Speed up web API with Laravel and Swoole using Docker
Laravel 6.0 - co nowego?
Przetwarzanie Asynchroniczne i Promises w Laravel
KPI w projektach IT
Jak stworzyliśmy system kudosów w Laravelu i Slacku
Mikrousługi w allegro
Ad

Laravel Jobs i PHP8