SlideShare a Scribd company logo
1 of 23
Download to read offline
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

More from Laravel Poland MeetUp

More from Laravel Poland MeetUp (20)

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

Action-based Laravel