Symfony 4 gdzie zamieszczać logikę?

0

Chciałbym aby kontrolery obsługiwały tylko żądania z url

Modele zajmowały się obsługą bazy danych

Widoki widokami

Natomiast gdzie wcisnąć metody dodatkowe
Np metoda statyczna generująca linki na podstawie danych z obiektu ale powiązana z konkretnym "modułem"
Inne metody sterujące których nie chce trzymać w kontrolerze, tzn mógłbym ten kod trzymać w metodzie która obsługuje żądanie ale metoda była by za długa więc refactorując coś takiego tworze jakieś mniejsze metody które mają w sobie fragmenty tej metody ale chciałbym to wynieść poza ten kontroler.

Może też w ogóle źle do tego podchodzę. Po prostu chciałbym zobaczyć kilka prostych przykładów jak to powinno być zgodnie ze sztuką.

0

Możesz tworzyć sobie serwisy, helpery, utilsy i inne takie badziewia :)

0

Jak używać takich serwisów żeby były zgodne z SOLID i przy okazji testowalne jednostkowo?

Bo generelnie kontrolery ciężko się testuje.

Czy architektura z kontrolerem walidującym, wywołującym serwisy i przekazującym dane do widoków będzie odpowiednia?

Dodatkowo fajnie by było by kontroler mógł działać pomimo niezaimplementowanego serwisu (wiem co ma robić, jakie przykładowe dane zwraca, ale jeszcze nie wiem jak / nie zrobiłem tego / kto inny to robi)

Symfony/Laravel/PHP + MVC tak samo?

0

Jak to jak, normalnie. Na przykładzie najlepiej, więc jedziemy.

Wymagania:
Zrobić endpoint (czyli akcję w kontrolerze) do rejestracji użytkownika. Wymagane pola to adres email i hasło. Email musi być unikalny, a hasło musi zawierać minimum 6 znaków, wielkie i małe litery i minimum jednego krzaka.

W kontrolerze przyjmujesz żądanie. Wyciąganiesz z niego email i hasło. Sprawdzasz, czy są. Nie ma? Albo są to puste wartości? Przekierowujesz na stronę rejestracji z błędami. Jest email? Jest hasło (na razie nie ważne jakie)? Super. Pobierasz serwis z kontenera (UserManager, UserRegisterer whatever) i wywołujesz metodkę register przekazując email i hasło. Wewnątrz tego serwisu odbywa się walidacja czy email to email, czy jest unikalny, czy hasło ma duze, małe litery i krzaki oraz sama rejestracja, czyli załadowanie tego do bazki. Jak walidacja biznesowa się nie powiedzie to serwis moze walić jakiś wyjątek, a w kontrolerze go przechwytujesz i robisz to samo co wczesniej w wypadku błędów. Walidacja to moze byc osobny serwis. Kazdy serwis testujesz jednostkowo. Voila :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1