Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kontrolery i serwisy aplikacji
eerie
post 3.08.2020, 10:35:22
Post #1





Grupa: Zarejestrowani
Postów: 81
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? smile.gif
Go to the top of the page
+Quote Post
netir
post 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.
Go to the top of the page
+Quote Post
eerie
post 4.08.2020, 10:45:56
Post #3





Grupa: Zarejestrowani
Postów: 81
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...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 21:40