Kontrolery i serwisy aplikacji |
Kontrolery i serwisy aplikacji |
3.08.2020, 10:35:22
Post
#1
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%) |
Siedzę już godzinę na forum i nie znalazłem odpowiedzi na nurtujące mnie pytanie...
Gdy zaczynałem programować obiektowo w PHP, umieszczałem całą logikę biznesową w kontrolerach. Zwrócono mi na tym forum uwagę, iż nie jest to poprawne. Że kontroler powinien tworzyć jedynie potrzebne obiekty i wstrzykiwać je do serwisu aplikacji. Cała logika biznesowa powinna być wykonywana w takim serwisie. Potem znalazłem ciekawy artykuł na ten temat i ma to sens: http://adam.wroclaw.pl/2016/04/serwis-serwisowi-nierowny/ Oto prosty przykład, jak obecnie tworzę kontrolery: https://github.com/webeeq/symfony.eeq/blob/...eController.php Oraz serwisy: https://github.com/webeeq/symfony.eeq/blob/...SiteService.php Jednak spotkałem się z opinia programisty ASP.NET, że takie przerzucanie wszystkiego z kontrolera do serwisu nie jest wcale takie poprawne. Inny programista PHP podał mi przykład aplikacji, która w ogóle nie korzysta z serwisów aplikacji. Więc jak to jest? Jak tworzyć aplikację webową w PHP, aby było poprawnie? Prosiłbym o jakiś link do repozytorium z przykładowym kodem. U mnie w serwisach aplikacji faktycznie jest lekki bałagan i nie wygląda to dobrze. Jak to powinienem wykonywać poprawnie? |
|
|
3.08.2020, 13:32:58
Post
#2
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 5 Dołączył: 20.05.2019 Ostrzeżenie: (0%) |
Nie znam zbyt dobrze Symfony, ale z tego co widzę to masz wszystko pomieszane - https://symfony.com/doc/current/service_con...autowiring.html
Powinieneś zrobić interfejs zaimplementować go pod Service i wstrzyknąć interfejs do Controllera. Sam service nie powinien robić żadnej walidacji, tylko spełniać jakieś jedno określone zadanie, tak żebyś mógł go wstrzykiwać w dowolne miejsca w myśl DRY. |
|
|
4.08.2020, 10:45:56
Post
#3
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%) |
Dzięki za odpowiedź. Poczytałem trochę i doszedłem do pewnych wniosków. W artykule, który podałem, autor napisał, iż serwisy możemy podzielić na trzy rodzaje (Serwisy Aplikacji, Serwisy Infrastruktury, Serwisy Domeny). Symfony pozwala unikać powtarzania się kudu (dzięki autowiring) i wstrzykiwać serwisy np. do metod akcji kontrolerów. Nie oznacza to jednak, iż musimy z tego korzystać, ale możemy...
Z artykułu wynika, iż stosowanie Serwisów Aplikacji, aby przenieść logikę biznesową z kontrolera do takiego głównego serwisu zarządzającego innymi serwisami, jest jak najbardziej ok. Tylko nie wiem, czy to jest powszechna i zalecana praktyka. Bo ja po prostu przeniosłem całą obsługę formularza i wszystkie związane z tym akcje do mojego serwisu. W kontrolerze pozostało samo sprawdzenie uprawnień do modyfikacji danych strony i przekierowanie na stronę logowania, gdy ich brak. Tylko mam wątpliwości, czy ma to sens? Bo kontroler praktycznie nic nie wykonuje... |
|
|
Wersja Lo-Fi | Aktualny czas: 26.09.2024 - 13:18 |