• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dodawanie logiki w laravelu

Object Storage Arubacloud
0 głosów
208 wizyt
pytanie zadane 27 marca 2018 w PHP przez User007 Bywalec (2,400 p.)

Witam.

Mam pytanie odnośnie dodawania logiki w projekcie Laravel.

Przesyłam plik graficzny na serwer przez formularz i chciałbym na przykład zmienić rozmiar, przyciąć itp. I tak zmieniony zapisać a następnie zwrócić nazwę pliku do zapisania w bazie danych. Więc gdzie taką logikę zapisać. W kursach czy poradnikach wszyscy takiego typu operacje a nawet walidacje wrzucają do Controllera prosto do metody CRUD, co jest trochę bez sensowne. Myślałem aby tą logikę dodać do modelu, ale tu znowu Laravel zaleca aby nic tam nie dodawać oprócz możliwych do nadpisania metod.

Więc jak? Utworzyć klasę np. PostHelper i tam wrzucić logikę obrabiania zdjęć lub wszelaką inną?

Jak powinien wyglądać taki przykładowy szkielet?

Dziękuję

1 odpowiedź

0 głosów
odpowiedź 27 marca 2018 przez kemyyyt Bywalec (2,580 p.)
Ogólnie to twoje pytanie jest bardzo fajne.

Ja widzę to tak kontroler przyjmuje przez DI (dependecy injection https://laravel.com/docs/5.6/container) powiedzmy interface ImageResizer ta abstrakcja przyjmuje natomiast interaface Storage. Kontroller dodatkowo przyjmuje abstrakcje ImageRepository będzie to odpowidzialne za komunikacje z db. Nie wiem czy koniecznie chce swoje DTO na Image tutaj ale moze wtedy bedzie to ładniej wyglądać

ImageResizer - tutaj zawierasz logikę obróbki zdjęcia przekazuje on do Storage zdjęcia po obróbce  zwracasz throw Exception jezeli coś poszło nie tak lub true jezli wszytko się udało
Storage - tutaj zawierasz logikę zapisu oczywiscie throw jezli coś poszło nie tak
ImageRepository - jezli wszytko się udało to zapisujesz nazwe przez repository

Dzięki takiemu podziałowi masz SRP  a dzięki DI masz swobodne testowanie oraz podmianę odpowiednich abstraktów w zależności od środowiska.

P.S
Jak ognia unikaj w nazwach klas słów typu
-object
-helper
-service
-class
-base
to po prostu jest zbyt generczne i nic nikumu nie mówi...
komentarz 28 marca 2018 przez User007 Bywalec (2,400 p.)
Wolałbym to na jakimś przykładzie zobaczyć bo nie jestem tak zaawansowany aby sobie to w głowie wyobrazić.

Albo inaczej. Nie wiem o czym mówisz :(.
komentarz 29 marca 2018 przez kemyyyt Bywalec (2,580 p.)
Postaram się napisać taki szkielet ale raczej dopiero w weekend....
komentarz 29 marca 2018 przez User007 Bywalec (2,400 p.)
Dziękuję.

Podobne pytania

0 głosów
0 odpowiedzi 137 wizyt
pytanie zadane 13 lutego 2018 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
1 odpowiedź 256 wizyt
pytanie zadane 10 sierpnia 2019 w PHP przez Artek Stary wyjadacz (11,800 p.)
0 głosów
0 odpowiedzi 42 wizyt
pytanie zadane 26 listopada 2023 w PHP przez el maccho Użytkownik (620 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...