![]() |
![]() |
![]()
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) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 05:27 |