![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 22.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam wątpliwości odnośnie logiki działania routingu w aplikacji implementującej MVC. Na wstępie słowo odnośnie mojej implementacji: Aplikacja składa się z modułów, każdy moduł ma swoje kontrolery widoki i modele. Tak więc router musi zwrócić prócz kontrolera i akcji nazwę modułu (oraz opcjonalnie parametry). Mój dylemat opiszę na podstawie tras dynamicznych (router obsługuje również trasy statyczne oraz regex). Trasy definiuję podając "ścieżkę" oraz tablicę wartości "domyślnych" i tak mam np trasę:
Dla ścieżki np. 'blog/posts' router, stwierdziwszy, że podana ścieżka pasuje do danej trasy, zwróci tablicę: ('module' => 'blog', 'controller' => 'posts', 'action' => 'index'). Jednak gdy zdefiniuję kolejną trasę następująco:
pojawia się problem. Gdyby router przypasował daną trasę np do ścieżki 'articles/all', zwróciłby tablicę: ('module' => 'articles', 'controller' => 'articles', 'action' => 'all'). Jednak podana ścieżka ('articles/all') pasuje do obu powyższych tras. Obecnie działający router zwróci więc tablicę na podstawie pierwszej ścieżki: ('module' => 'articles', 'controller' => 'all', 'action' => 'index'). Oczywiście nie istnieje taki kontroller jak 'all' w module 'articles' więc pojawi się błąd 404. I tu mój dylemat: czy router powinien zwracać tablice przypasowań dla wszystkich pasujących tras? wtedy dispatcher stwierdziwszy, że nie ma kontrolera o nazwie 'all' sięgnąłby po następny wynik i trafił na właściwy kontroler. Teoretycznie sprawa prosta w działaniu oraz w implementacji, ale czy przy większej ilości tras pasujących do danej ścieżki nie odbiłoby się to na wydajności? Czy ktoś spotkał się z takim routingiem lub może robił coś podobnego...? Piszcie, co o tym myślicie. Pozdrawiam szaleq |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 60 Dołączył: 25.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jesteś pewien, że się uczysz? To dość delikatna kwestia zahaczająca o kwestie natury psychologicznej.
Napisanie kodu samemu a zrozumienie jak działa kod napisany przez innych (i dlaczego tak został napisany) to różne sprawy. To drugie również jest bardzo wartościowe jeśli zmusza Cię do umysłowego wysiłku, aby zrozumieć dane rozwiązanie. Rozpatrzmy taką sytuację: nie lubisz uczyć się z gotowych rozwiązań, bo Ci "nie wchodzą" do głowy, więc nie starasz się studiować już istniejącego kodu, tylko wolisz wymyślać własny. Ok, nawet jeśli stworzysz kod o analogicznym działaniu (zastosowaniu) to nadal możesz nie być w stanie zrozumieć kodu napisanego przez kogoś innego. A to jest ograniczeniem, z którego możesz nawet nie zdawać sobie sprawy. W Twoim umyśle (mózgu) istnieje pewna konceptualna reprezentacja tylko Twojego rozwiązania, a tymczasem inne rozwiązania mogą być o wiele lepsze, zawierać elementy, które w Twoim mózgu nie powstały i przez to te obszary koncepcji (abstrakcji) problemu są dla Ciebie zasadniczo niedostępne. Innymi słowy, można to w pewnym uproszczeniu ująć w ten sposób, że istniejące połączenia neuronalne w Twoim mózgu umożliwiają posługiwanie się pewnymi rozwiązaniami, ale siłą rzeczy nie masz dostępu do innych możliwych rozwiązań, bo odpowiednie sieci neuronowe w Twoim mózgu nie istnieją (IMG:style_emoticons/default/smile.gif) I właśnie dlatego studiowanie gotowych rozwiązań jest bardzo pożyteczne (ale takie studiowanie do pełnego zrozumienia co, jak i dlaczego), bo to rozwija umysł - a dokładniej mózg (IMG:style_emoticons/default/smile.gif) Zresztą, ten wysiłek, który się odczuwa przy próbie zrozumienia cudzego kodu pochodzi m.in. właśnie z faktu, że mózg nie umie tego ogarnąć, ale właśnie robienie tego bardzo go stymuluje. Podążanie łatwą, znaną ścieżką, która nie stanowi dla mózgu wyzwania (co oznacza brak stymulacji do tworzenia nowych połączeń między neuronami) jest może przyjemne i komfortowe, ale tak naprawdę nie wiele rozwija. Ten post edytował irmidjusz 1.09.2012, 21:48:37 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 15:42 |