Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MVC] Rozbudowany router i wyspecjalizowane kontrolery?, czy rozbudowane i „inteligentne” kontrolery?
MacDada
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 1
Dołączył: 24.06.2010
Skąd: Sopot

Ostrzeżenie: (0%)
-----


Hej,

mam dwa koncepty na pisanie aplikacji, ale właściwie to oba mi nie podchodzą pod gust.

Koncept 1: Rozbudowany router i wyspecjalizowane kontrolery.
Wygląda to tak, że router pobiera sobie PATH_INFO, rozbija na tablice i interpretuje co jest kontrolerem, co akcją, co innymi parametrami. Odpala więc odpowiedni kontroler i przekazuje mu tablicę z ustaloną akcją i parametrami.

Koncept 2: Mały router, rozbudowane i „inteligentne” kontrolery.
Router pobiera sobie PATH_INFO, rozbija na tablice, rozpoznaje pierwszy parametr jako kontroler i odpala go, przekazując mu surową tablicę. Dopiero kontroler ma swój mini-router, który rozpoznaje co jest akcją, co parametrem i na tej podstawie działa.

Które rozwiązanie jest lepsze?

Kolejne pytanie. Chciałbym, żeby aplikacja była możliwie bardzo zmodularyzowana, a więc, żeby można było wziąc klocki i na ich podstawie zbudować stronę. Takimi klockami byłby moduł menu, moduł newsów, moduł kalendarza, księgi gości, moduł reklamy, itd. Każdy moduł miałby swój kontroler i zestaw widoków. Czyli działanie aplikacji wyglądałoby tak:

Chcę wyświetlić stronę z newsem, to odpalam kontroler newsów, który zajmuje się wyświetleniem newsa. Oprócz tego odpalam kontroler menu i kontroler reklamy. Każdy to niezależny klocek, który można wykorzystać na dowolnej stronie. Już o tym kiedyś pisałem.

Jak jednak to zrealizować? Musiałbym kontrolerowi newsów w odpowiednim momencie kazać wyświetlić to menu, czyli kontroler musiałby albo mieć metodę render (czyli zajmować się aspektami widoku) albo zwracać w zmiennej gotowy kod HTML, który wyświetlałby dopiero kontroler, który wywołał moduł tworzenia menu...

No kolejna sprawa.

Mam np http://strona.com/news/4/
Czyli strona odpala kontroler News, akcja domyślna View, parametr 4 jako identyfikator newsa.

Z drugiej strony mam panel admina: http://strona.com/admin/news/4/edit/
Czyli strona odpala kontroler admin, ten odpala kontroler news, itd.

Czy powinienem zrobić dwa oddzielne kontrolery - jeden "kliencki" tylko z opcją wyświetlania, drugi adminowy, z edycją, itd. - czy może jeden kontroler „inteligentny”, który w zależności od kontekstu inaczej się zachowuje?


Dzięki za odpowiedzi, ostatnio więcej siedzę i myślę nad koncepcją pisania niż rzeczywiście spędzam czas na kodowaniu... (IMG:style_emoticons/default/sciana.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(MacDada @ 20.08.2010, 21:41:24 ) *
Koncept 1: Rozbudowany router i wyspecjalizowane kontrolery.[/b]
Wygląda to tak, że router pobiera sobie PATH_INFO, rozbija na tablice i interpretuje co jest kontrolerem, co akcją, co innymi parametrami. Odpala więc odpowiedni kontroler...


Stop, router nic nie odpala. Istnieje taka zasada. która mówi, że obiekty powinny mieć jak najmniejszą odpowiedzialność (zdaje się, że dokładnie jedną (IMG:style_emoticons/default/biggrin.gif) ).
Tak więc zostaw routerowi zabawę z deszyfrowaniem URLa, a samo odpalenie akcji przekaż do innego obiektu.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 7.10.2025 - 05:27