SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Praktyczne użycie
Repository Pattern w
Laravel cz. I
Marek Tenus
Full-stack Senior Developer
marek@highsolutions.pl
Czym jest Repository Pattern?
Dodaje warstwę abstrakcyjną, która obsługuje
komunikację pomiędzy domeną a warstwami
mapującymi dane.
Czym jest Repository Pattern?
Czym jest Repository Pattern?
Business
Logic
(Domain)
Repository
Pattern
Data Source
● DB
● Memory
● API
Domena, czyli pewna sfera wiedzy i aktywności,
obszar tematyczny, do którego użytkownik
aplikuje używane oprogramowanie, źródło:
https://bottega.com.pl
Czym jest Repository Pattern?
Repository Pattern >= DAO
Po co używać Repository Pattern?
1. Odseparowanie domeny biznesowej od warstwy
składowania danych
2. Pobieranie danych z różnych źródeł
3. Czytelniejszy kod i prostszy do utrzymania
Kiedy używać Repository Pattern?
1. DDD - Domain Driven Design
2. Wiele źródeł danych
Repository Pattern w Laravel
1. Tworzymy katalog app/Repositories
2. Tworzymy katalog domeny np. app/Repositories/Car
3. Tworzymy interfejs wspólny/per dane repozytorium
4. Tworzymy repozytorium
5. Wstrzykujemy repozytorium do kontrolera
Repository Pattern w Laravel
Tworzymy aplikację umożliwiającą wynajem
samochodów przez osoby prywatne od osób/firm.
Możemy wyróżnić następujące scenariusze:
● create - można dodać samochód
● getList - można zobaczyć oferty
● find - można pobrać określoną ofertę
● update - można zaktualizować dane o samochodzie
● delete - samochód może zostać usunięty
Repository Pattern w Laravel
Repository Pattern w Laravel
getList
create
Repository Pattern w Laravel
find
update
delete
Repository Pattern w Laravel
Repository Pattern w Laravel
Repository Pattern w Laravel
Możemy tworzyć repozytoria
odnoszące się do różnych źródeł
danych np.
CarDbRepository
CarRedisRepository
CarSomeAPIRepository
CarJsonRepository
Repository Pattern w Laravel
Repository Pattern w Laravel
Repository Pattern w Laravel
Repository Pattern w Laravel
Repository Pattern w Laravel
Jeśli użyjemy CarRepositoryInterface, to
znaczy, że wstrzykujemy
CarRepository.
Jest to łatwy sposób na przełączenie
pod repozytorium operujące na innych
źródłach danych.
Repository Pattern w Laravel a DDD
Marek Tenus
marek@highsolutions.pl

Mais conteúdo relacionado

Semelhante a Praktyczne użycie Repository Pattern w Laravel cz. I

Delphi 8 .NET. Kompendium programisty
Delphi 8 .NET. Kompendium programistyDelphi 8 .NET. Kompendium programisty
Delphi 8 .NET. Kompendium programisty
Wydawnictwo Helion
 

Semelhante a Praktyczne użycie Repository Pattern w Laravel cz. I (20)

Wprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache SparkWprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache Spark
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developera
 
Delphi 8 .NET. Kompendium programisty
Delphi 8 .NET. Kompendium programistyDelphi 8 .NET. Kompendium programisty
Delphi 8 .NET. Kompendium programisty
 
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...
 
Jak ograniczyć używanie tablic w PHP.pptx
Jak ograniczyć używanie tablic w PHP.pptxJak ograniczyć używanie tablic w PHP.pptx
Jak ograniczyć używanie tablic w PHP.pptx
 
[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?
[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?
[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010
 
Wprowadzenie do MEF w .NET 4.0
Wprowadzenie do MEF w .NET 4.0Wprowadzenie do MEF w .NET 4.0
Wprowadzenie do MEF w .NET 4.0
 
Logi dla dużych firm_Tameshi na AWS Community Day .pdf
Logi dla dużych firm_Tameshi na AWS Community Day .pdfLogi dla dużych firm_Tameshi na AWS Community Day .pdf
Logi dla dużych firm_Tameshi na AWS Community Day .pdf
 
Ruby on rails wprowadzenie teoretyczne. Łukasz Szyndzielorz
Ruby on rails wprowadzenie teoretyczne. Łukasz SzyndzielorzRuby on rails wprowadzenie teoretyczne. Łukasz Szyndzielorz
Ruby on rails wprowadzenie teoretyczne. Łukasz Szyndzielorz
 
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
 
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
 
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposePrzenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
 
PHP i microsoft
PHP i microsoftPHP i microsoft
PHP i microsoft
 
Php i Microsoft
Php i MicrosoftPhp i Microsoft
Php i Microsoft
 
PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubi
 
Dlaczego Drupal CMS? - www.siplex.pl
Dlaczego Drupal CMS? - www.siplex.plDlaczego Drupal CMS? - www.siplex.pl
Dlaczego Drupal CMS? - www.siplex.pl
 
[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System
 
Zasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznychZasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznych
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 

Mais de Laravel Poland MeetUp

Mais de Laravel Poland MeetUp (20)

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

Praktyczne użycie Repository Pattern w Laravel cz. I