![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
Router to obiekt który rozbija żądanie i wyciąga z niego nazwę żądanej akcji, parametry itp. Router jest także generatorem linków (np nice urls)
HttpRequest jest obiektem, bedącym otoczką dla żądania http. I teraz moje pytania: 1. Czy HttpRequest powinien by jednocześnie routerem: Kod --- klient --- czy router powinien byc oddzielny analizowac dane z httpRequest i na tej podstawie stwierdzac, którą ma akcję uruchomic:--- HttpRequest i Router w jednym --- --- kontroler - pobiera nazwe akcji z Routera --- Kod --- klient --- ?--- HttpRequest --- --- Router - analizuje HttpRequest sprawdzająca jaka akcja ma byc uruchomiona --- --- Kontroler - pobiera z routera nazwe akcji --- 2. Jeżeli ta pierwsza opcja to gdzie tu powinien by generator linków? Przecież nie za bardzo pasuje on do HttpRequest |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) ![]() ![]() |
Hej.
Prześledziłem wątek i mam propozycję na rozwiązanie problemu HttpRequest i połączenia go z Routerem, ale nurtuje mnie jedno - jak przekazujecie do widoku wygenerowane linki i jak je generujecie (gdzie?). U mnie to wygląda tak: HttpRequest(Połączony z Routerem) -> FrontController -> Action -> Services -> DAO -> Services -> Action (Ta zwraca kontener z danymi - taki transporter między warstawami aplikacji) -> FrontController -> View -> Template. I teraz może lekutko to streszcze: - HttpRequest dziedziczy po klasie, która stanowi zbiór metod do manipulowanie kontenerem danych(bo w zasadzie czym jest HttpRequest jak nie zbiorem danych o żądaniu) na zasadzie klucz / wartość i teraz ktoś pytał tutaj o walidację - ten problem odchodzi, bo w HttpRequest dzięki dziedziczeniu mam dostępne metody getStringVar, getIntVar, getArrayVar i getVar(jeśli nie wiem co dostane). W przypadku gdy dane są w innym formacie mogę wyrzucić wyjątek i odpowiednio go obsłużyć. HttpRequest jest kontenerem ktory w aplikacji jest przekazywany w dol, czyli do akcji itd. - Jezeli chodzi o ladne URL'e i Router to mozna albo zmieniac implementacje klasy HttpRequest (mi to nie lezy), albo jakos te dwie warstwy polaczyc - ja to widze tak: HttpRequest w kostruktorze dostaje obiekt typu Router (obiekty Routerow sa implementowane na bazie spojnego interfejsu) i dzieki temu mozemy wymieniac sam obiekt na zasadzie podawania roznych implementacji jednego typu (Router):
Teraz $request może bez problemu wywołać metodę ustaloną w interfejsie Router (np. decodeUrl) w kostruktorze i przy tworzeniu instancji $request odpowiednio te dane które zwróci Router ustawic na zasadzie klucz / wartosc. I wszystko piknie... obiekt typu HttpRequest leci w dół do akcji - tam akcja ma informacje o parametrach itd. Pytanie jak to zrobić w drugą stronę - jak generować automatycznie linki na bazie tego co dostarcza Router - czyli przekazywać je do szablonów, lub innego typu widoków? - nie potrafię tego sobie umiejscowić w całej aplikacji. Może ktoś z was ma jakieś sugestie. Pozdrawiam. anas |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 22:53 |