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

More Related Content

Similar to Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz. I"

PHP5. Tajniki programowania
PHP5. Tajniki programowaniaPHP5. Tajniki programowania
PHP5. Tajniki programowania
Wydawnictwo Helion
 
MARKOS – semantyczne repozytorium otwartego oprogramowania
MARKOS – semantyczne repozytorium otwartego oprogramowaniaMARKOS – semantyczne repozytorium otwartego oprogramowania
MARKOS – semantyczne repozytorium otwartego oprogramowania
bartekel
 

Similar to Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz. I" (20)

[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 - 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
 
Php i Microsoft
Php i MicrosoftPhp i Microsoft
Php i Microsoft
 
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
 
Podstawy SEO w Drupalu 7 - Jarosław Sobiecki
Podstawy SEO w Drupalu 7 - Jarosław SobieckiPodstawy SEO w Drupalu 7 - Jarosław Sobiecki
Podstawy SEO w Drupalu 7 - Jarosław Sobiecki
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
 
PHP5. Tajniki programowania
PHP5. Tajniki programowaniaPHP5. Tajniki programowania
PHP5. Tajniki programowania
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
 
MARKOS – semantyczne repozytorium otwartego oprogramowania
MARKOS – semantyczne repozytorium otwartego oprogramowaniaMARKOS – semantyczne repozytorium otwartego oprogramowania
MARKOS – semantyczne repozytorium otwartego oprogramowania
 

More from HighSolutions Sp. z o.o.

More from HighSolutions Sp. z o.o. (19)

Laravel Poland Meetup #22 - "Kilka slajdów o castowaniu atrybutów w Eloquent"
Laravel Poland Meetup #22 - "Kilka slajdów o castowaniu atrybutów w Eloquent"Laravel Poland Meetup #22 - "Kilka slajdów o castowaniu atrybutów w Eloquent"
Laravel Poland Meetup #22 - "Kilka slajdów o castowaniu atrybutów w Eloquent"
 
Laravel Poznań Meetup #16 - "Action-based Laravel"
Laravel Poznań Meetup #16 - "Action-based Laravel" Laravel Poznań Meetup #16 - "Action-based Laravel"
Laravel Poznań Meetup #16 - "Action-based Laravel"
 
Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
 Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ... Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
 
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
 
Dni Kariery - "Turkusowe organizacje. Nowoczesny styl zarządzania"
Dni Kariery - "Turkusowe organizacje. Nowoczesny styl zarządzania"Dni Kariery - "Turkusowe organizacje. Nowoczesny styl zarządzania"
Dni Kariery - "Turkusowe organizacje. Nowoczesny styl zarządzania"
 
Laravel Poznań Meetup #8 - "Laravel czy lumen, oto jest pytanie"
Laravel Poznań Meetup #8 - "Laravel czy lumen, oto jest pytanie"Laravel Poznań Meetup #8 - "Laravel czy lumen, oto jest pytanie"
Laravel Poznań Meetup #8 - "Laravel czy lumen, oto jest pytanie"
 
Laravel Poznań Meetup #8 - "Laravel Telescope - niezastąpione narzędzie do de...
Laravel Poznań Meetup #8 - "Laravel Telescope - niezastąpione narzędzie do de...Laravel Poznań Meetup #8 - "Laravel Telescope - niezastąpione narzędzie do de...
Laravel Poznań Meetup #8 - "Laravel Telescope - niezastąpione narzędzie do de...
 
Laravel Poznań Meetup #7 - "PWA - Progressive Web App"
Laravel Poznań Meetup #7 - "PWA - Progressive Web App"Laravel Poznań Meetup #7 - "PWA - Progressive Web App"
Laravel Poznań Meetup #7 - "PWA - Progressive Web App"
 
Laravel Poznań Meetup #7 - "Laravel nova - czy to się w ogóle opłaca"
Laravel Poznań Meetup #7 - "Laravel nova - czy to się w ogóle opłaca"Laravel Poznań Meetup #7 - "Laravel nova - czy to się w ogóle opłaca"
Laravel Poznań Meetup #7 - "Laravel nova - czy to się w ogóle opłaca"
 
Laravel Poznań Meetup #6 - "Nowości w Laravel 5.7"
Laravel Poznań Meetup #6 - "Nowości w Laravel 5.7"Laravel Poznań Meetup #6 - "Nowości w Laravel 5.7"
Laravel Poznań Meetup #6 - "Nowości w Laravel 5.7"
 
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
 
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
 
How business and IT should cooperate with each other to verify business model...
How business and IT should cooperate with each other to verify business model...How business and IT should cooperate with each other to verify business model...
How business and IT should cooperate with each other to verify business model...
 
Jak Biznes i IT powinny współpracować ze sobą by zweryfikować model biznesowy...
Jak Biznes i IT powinny współpracować ze sobą by zweryfikować model biznesowy...Jak Biznes i IT powinny współpracować ze sobą by zweryfikować model biznesowy...
Jak Biznes i IT powinny współpracować ze sobą by zweryfikować model biznesowy...
 
Laravel Poznań Meetup #2 - Creating chatbots with BotMan
Laravel Poznań Meetup #2 - Creating chatbots with BotManLaravel Poznań Meetup #2 - Creating chatbots with BotMan
Laravel Poznań Meetup #2 - Creating chatbots with BotMan
 
Laravel Poznań Meetup #2 - Koniec CSS? Jest Tailwind!
Laravel Poznań Meetup #2 - Koniec CSS? Jest Tailwind!Laravel Poznań Meetup #2 - Koniec CSS? Jest Tailwind!
Laravel Poznań Meetup #2 - Koniec CSS? Jest Tailwind!
 
Laravel Poznań Meetup #2 - Wykorzystanie FormRequest w Laravelu
Laravel Poznań Meetup #2 - Wykorzystanie FormRequest w LaraveluLaravel Poznań Meetup #2 - Wykorzystanie FormRequest w Laravelu
Laravel Poznań Meetup #2 - Wykorzystanie FormRequest w Laravelu
 
Laravel Poznań Meetup #2 - Tworzenie chatbotów z BotMan
Laravel Poznań Meetup #2 - Tworzenie chatbotów z BotManLaravel Poznań Meetup #2 - Tworzenie chatbotów z BotMan
Laravel Poznań Meetup #2 - Tworzenie chatbotów z BotMan
 
Jak błędów unikać prowadząc własną firmę i jak ją rozwijać
Jak błędów unikać prowadząc własną firmę i jak ją rozwijaćJak błędów unikać prowadząc własną firmę i jak ją rozwijać
Jak błędów unikać prowadząc własną firmę i jak ją rozwijać
 

Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz. I"