SlideShare a Scribd company logo
Action-based Laravel
Adam Matysiak
CEO / Team Leader
adam@highsolutions.pl
Paczka: “Laravel Actions”
● https://laravelactions.com/
● https://github.com/lorisleiva/laravel-actions
● Inne podejście do organizacji kodu, skupiające się na
akcjach jakie wykonuje logika naszego kodu
Koncept
1 akcja to...
● Invokable Controller
● Plain Object
● Job
● Event Listener
● FormRequest
● Artisan Command
● Policy
Instalacja i konfiguracja
1. Posiadać repo Laravela w wersji 5.8-8.x
2.composer require lorisleiva/laravel-actions
3.php artisan make:action MyFirstAction
Action jako obiekt
● Wykonanie dowolnej operacji,
zazwyczaj przenoszonych do
klas typu Service czy metod w
Modelach
Action jako obiekt
Action jako kontroler
● 1 obiekt kontrolera może zawierać:
○ Wywołanie typu invokable
○ Autoryzację i walidację (jak FormRequest)
○ Różne response’y
○ Definicje route’a
Action jako kontroler
Action jako kontroler
Action jako kontroler
Action jako job
Action jako listener
Action jako Command
Action w jednym
● A tak naprawdę to jeden Action może być nimi
wszystkimi naraz!
○ Choć nie zawsze ma to sens :)
Case study
● Proste API, które pozwala na:
○ zarządzanie autoryzacją
○ zwracanie danych
○ przyjmowanie
wgrywanych plików
○ tworzenie zamówienia
○ generowanie PDFa
○ powiadamianie userów
Case Study - logowanie
Case study - nowe konto
Case study - generowanie PDF
Testowanie
● Testujemy tak samo jak do tej pory
● Testy End-2-end i Unit
Podsumowanie
● + Bardziej czytelna organizacja kodu
● + Łatwo znaleźć konkretną akcję wykonywaną przez
kod
● - Więcej czasu zajmie skopiowanie kodu z innego
projektu
● - Cały zespół musi poznać to podejście
Pytania?
adam@highsolutions.pl
@AdamMatysiak

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
Laravel Jobs i PHP8
PDF
Wszystko o Laravel Livewire
PDF
Laravel/PHP - zderzenie z PDFami
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?
Laravel Jobs i PHP8
Wszystko o Laravel Livewire
Laravel/PHP - zderzenie z PDFami
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

Action-based Laravel