Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przerośnięte kontrolery
Forum PHP.pl > Forum > PHP
acidm
Kiedy kontrolery są przerośnięte? Od ilu linii (tak mniej więcej)?
Jak robićie CRUD-a w panelu admina do jakiegoś obiektu (np. user) to rozdzielacie na :
kotroler=user,akcja=metoda
czy
user=folder a każda akcja to osobny kontroler?
Turson
A co to znaczy przerośnięty kontroler?
Dla przykładu w Joomli to model może kilkaset linii a kontroler samo ciało klasy, po prostu jest klasa i tyle.
Jeżeli chcesz dla akcji nowy user, edycja usera, usunięcie usera osobne kontrolery to kiepski pomysł.
ziolo
Zdecydowanie jeden kontroler na dany moduł (user) i wszystkie jego akcje w tym module - new, edit, delete.

Ja generalnie miałem/mam nawyk pisanie większości logiki w kontrolerach.

Teraz programuje w Symfony2.
I staram się przerzucać logikę do innych elementów- drobne rzeczy(np jakaś mała modyfikacja danych) jeśli się da to robię w encjach - a reszta to w osobnych usługach(klasach) dedykowanych do określonych rzeczy.

A z kontrolera po prostu mam dostęp do tych usług i tam z nich korzystam aby wykonać daną akcję
Pyton_000
Przerośnięty... powyżej 10 linijek... Wystarczy?
Dobry kod kontrolera może mieć 3 linijki
- Inicjuj Model,
- Pobierz dane
- Wypluj do widoku

Generalnie logika danych najlepiej ujęta w modelu dzięki czemu kontrolery masz małe, przejrzyste i czytelne. Wiadomo co robi.
Akcje modelu biznesowo powinny być zorientowane na celu i wykonywać to co ma robić a nie n dodatkowych rzeczy
owca_82
Ja to widzę tak:

- jeden kontroler na moduł z akcjami go obsługującymi
- kontroler inicjuje środowisko modułu - model + widok
- wszystkie akcje wyświetlające dane kierujesz do widoku, który sam pobiera sobie dane z modelu, dekoruje zgodnie z szablonem i wyrzuca to na wyjście
freemp3
Cytat(owca_82 @ 2.07.2014, 13:09:45 ) *
- jeden kontroler na moduł z akcjami go obsługującymi

W takim razie jaki jest sens istnienia modułów skoro pakujesz tam tylko jeden kontroler? To tak jak by robić jedną akcje w kontrolerze. wink.gif Moduły zostały po to stworzone, żeby grupować kontrolery, modele i widoki, które są odpowiedzialne za pewną część aplikacji np. frontend, CMS, itp.

Przerośnięty kontroler jest w tedy, gdy działa wolno, nie możesz się połapać co on tak w zasadzie robi bo tyle tego jest nawalone i w większości przypadków bez ładu i składu.

Tak jak napisał @Pyton_000 kontroler powinien być możliwie prosty. Większość obliczeń powinna znajdować się w modelach. Kontroler ma tylko przekazywać dane pomiędzy użytkownikiem, modelem i widokiem.
vermis
Cytat(acidm @ 1.07.2014, 21:40:58 ) *
Kiedy kontrolery są przerośnięte? Od ilu linii (tak mniej więcej)?

Teoretycznie kontroler z jedną linią też może być przerośnięty.
Spójrz na to trochę bardziej abstrakcyjnie. Kontroler zarządza przepływem w aplikacji i powinien pozwalać na łatwą zmianę tego przepływu.
Jeżeli nie możesz łatwo pobrać danych z innego modelu i zmienić widoku na inny to znaczy, że za dużo logiki masz w kontrolerze.
acidm
dzięki za info wink.gif Moje kontrolery zaczęły przypominać klasy biblioteczne, stąd wątek.Dobra, czas na porządki...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.