Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Kontrolery
olechafm
post
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

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


gdzie sprawdzać czy dany wywołany kontroler jest dopuszczalny? jeszcze w routerze zanim przekaże do dispatchera czy dopiero w nim?

chce kontrolować jaki kontroler jest wywoływany i jeśli jest np. z poza dopuszczalnego zbioru to przerzucać na ustalony przeze mnie default_controller, w którym miejscu to robić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
tolomei
post
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Jak poprawnie zadać pytanie.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
olechafm
post
Post #3





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

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


przepraszam czego w moim pytaniu nie rozumiesz, że musiałeś mnie spuścić na drzewo?
Go to the top of the page
+Quote Post
#luq
post
Post #4





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


W dispacherze, bo to on zarządza takimi danymi jak kontroler, akacja i parametry.


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
olechafm
post
Post #5





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

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


thx

kolejne pytanie z serii zatrważająco trudnych:

widok dla danego kontrolera powinien być inicjowany przez niego samego (w funkcji wewnątrz jego klasy) czy w dispatcherze jeśli to on odpowiada za obsługę uruchamiania kontrolera?
Go to the top of the page
+Quote Post
thek
post
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Dispatcher jest tylko do wywołania kontrolera z odpowiednimi parametrami. To kontroler (a właściwie Prezenter) powinien decydowac o tym jaki widok należy wywołać. Właściwie dla pełnego obrazu należało by zadać pytanie... W jakim wzorcu projektowym masz na myśli odpowiedź? wink.gif Jeśli MVP - to Presenter, Jeśli w MVC to może to zainicjować zmianę modelu może teoretycznie zarówno Model, jak i Kontroler.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
olechafm
post
Post #7





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

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


generalnie uczę się śledząc przebieg całego procesu w przypadku MVC, niestety książki z których korzystam oraz to co jest na necie są tragiczne pod względem dokładnego objaśnienia jakie kolejno zdarzenia powinny mieć miejsce (na konkretnym przykładzie, bo oczywiście teorii jest wszędzie multum i każdy autor pisze coś innego). Nie zależy mi generalnie na dokładnym trzymaniu się MVC ale utrzymanie się w jego ramach daje chyba duże możliwości, bo i logika budowania aplikacji staje się jaśniejsza (oddzielenie warstw od siebie). Kwestia zrozumienia tylko jakie interakcje powinny zachodzić w którym momencie... a np. "wspaniała" publikacja Programowanie Obiektowe w PHP5 podaje taki kod w dispatcherze po odebraniu danych z routera:
  1. $app=new controller();
  2. $app->jakieś funkcje();
  3. $app->jakiesfunkcje();
  4. $app->akcja();
  5.  
  6. $view=loader::load("view"); //inicjalizacja widoku poprzez loader wykorzystujący niepoprawnie używany "Singleton"
  7. $viewvars=$view->getVars($app)
  8.  


jednym słowem inicjalizacja widoku odbywa się w dispatcherze... i bądź tu mądry i chciej się człowieku uczyć z książek...

Ten post edytował olechafm 13.05.2011, 18:03:41
Go to the top of the page
+Quote Post
tolomei
post
Post #8





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Cytat(olechafm @ 11.05.2011, 09:22:31 ) *
przepraszam czego w moim pytaniu nie rozumiesz, że musiałeś mnie spuścić na drzewo?


Przepraszam za spuszczenie Cię na drzewo.
Wynikło to jedynie z mojej niewiedzy.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
thek
post
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Dispatcher zajmować się powinien jedynie przetwarzaniem żądania tak, by przyporządkować do niego odpowiedni kontroler i parametry. Jeśli miałbyś się trzymać w aplikacji webowej się MVC to... nie uda Ci się. To co w frameworkach jest używane i nazywa się jako MVC jest tak naprawdę MVP. A ten wzorzec opiera się na zasadzie: prezenter wybiera model oraz widok i je komunikuje między sobą. Tak więc odwołania do modelu i wywołania widoków oraz ich metod odbywają się wewnątrz prezentera.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
olechafm
post
Post #10





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

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


A do jakiego stopnia kontroler(prezenter) powinien być pośrednikiem w komunikacji między widokiem i modelem? Powinien sam pobrać z modelu interesujące dane, zapisać je w sobie i przekazać dopiero te dane do widoku w czystej postaci(zmiennych, tablic etc.), czy powinien do widoku przekazać obiekt modelu i pozwolić by odpowiednimi funkcjami widok sobie te dane wypruł z modelu?
Go to the top of the page
+Quote Post
Noidea
post
Post #11





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


Cytat
A do jakiego stopnia kontroler(prezenter) powinien być pośrednikiem w komunikacji między widokiem i modelem? Powinien sam pobrać z modelu interesujące dane, zapisać je w sobie i przekazać dopiero te dane do widoku w czystej postaci(zmiennych, tablic etc.), czy powinien do widoku przekazać obiekt modelu i pozwolić by odpowiednimi funkcjami widok sobie te dane wypruł z modelu?


Jeśli masz na myśli MVC, to to drugie.


--------------------
Go to the top of the page
+Quote Post
olechafm
post
Post #12





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

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


MVC aka MVP...
Go to the top of the page
+Quote Post
Noidea
post
Post #13





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


MVC i MVP to dwa wzorce, które różnią się między innymi sposobem komunikacji między widokiem a modelem. Więc jak ci mam odpowiedzieć na to pytanie?

http://www.google.pl/search?q=MVC+vs+MVP - w pierwszym linku masz diagram


--------------------
Go to the top of the page
+Quote Post
olechafm
post
Post #14





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

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


ciężko mi się zorientować, szczególnie, że dopiero odkrywam obydwa wzorce, niby chodzi mi o MVC ale:

Cytat(thek @ 13.05.2011, 21:12:10 ) *
Jeśli miałbyś się trzymać w aplikacji webowej się MVC to... nie uda Ci się. To co w frameworkach jest używane i nazywa się jako MVC jest tak naprawdę MVP.



ale z tego co rozumiem to

- w MVP widok i model nie mają ze sobą styczności, wszystko przechodzi przez prezenter(kontroler), który pobiera żądane przez widok dane z modelu i mu je zwraca

- w MVC kontroler inicjuje model i widok, przekazuje widokowi instancję modelu, który pobiera dane za jego pośrednictwem

przy czym w obu przypadkach model nie inicjuje żadnych akcji czy interakcji z własnej woli




Ten post edytował olechafm 16.05.2011, 15:28:49
Go to the top of the page
+Quote Post
Spawnm
post
Post #15





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Jest osobny temat jeśli chodzi o wzorce architektoniczne, tam na ten temat prowadźcie dyskusję .
Od siebie dodam że popularne frameworki nie używają MVP,
w MVP view nie ma dostępu do modeli, a w frameworkach to podstawa ;]
Go to the top of the page
+Quote Post
olechafm
post
Post #16





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

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


zapewne na pytanie które rozwiązanie lepsze w przypadku tej komunikacji, otrzymam tyle samo różnych opinii co odpowiedzi i muszę się sam przekonać co mi lepiej pasuje... mam rację?
Go to the top of the page
+Quote Post
thek
post
Post #17





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Dokładnie smile.gif Już sama próba dyskusji czym jest, a czym nie jest MVC, to flamewar wink.gif Zresztą zajrzyj do tematu o wzorcach, przeczytaj całość, a sam się przekonasz. Pewnie po jego lekturze będziesz nie mniej skołowany niż przed. Z tą różnicą, że będziesz wiedział ciut więcej i na podstawie tego co przeczytałeś, będziesz mógł własne zdanie sobie wyrobić. I szczerze mówiąc tak powinno być. Programowanie polega na myśleniu samodzielnym i wyciąganiu wniosków z wiedzy ogólnej czy "społecznościowej". Bez tego zostać można jedynie klepaczem kodu. Szybkim może, ale tylko klepaczem.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
olechafm
post
Post #18





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

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


póki co przepisałem kod na tę wersję zgodną z MVC i na razie tak będę go wykorzystywał, za dużo rzeczy na raz do nauki jest na początku, żeby wszystko od razu robić dobrze...
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 06:06