Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MVC] Kontroler - gdzie?
Kikert
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 15.09.2008

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


Witam,
uprzedzam, że przeczytałem temat przypięty wraz z odnośnikami i niewiele mi to pomogło - niestety.

Mam trzy pytania odnośnie tego wzorca - jeżeli tworzę aplikację web'ową, to:
1. Czy kontroler jest samym plikiem (index.php), czy dopiero plik główny go inicjuje?
2. Jak jest z widokiem? Czy HTML jest zwracany do kontrolera, czy do pliku głównego? (przy opcji, że kontroler trzeba wcześniej załączyć)
3. Czy widok jest załączany przez kontroler, czy przez plik główny? (również przy drugiej opcji)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
Nie lubię takich trochę personalnych docinków, ale... nie ma to jak uargumentowana opinia. Poza tym to nie jest wizja Zyxa, tylko założenia tego wzorca (który nie był tworzony z myślą o "środowisku webowym", w którym to ten wzorzec najczęściej jest skopany).

A gdzie tak jest napisane ze jest dobrze jak to on mowi na wiki na temat MVC pisza inaczej chyba ze mam problemy z czytaniem.
Go to the top of the page
+Quote Post
-=Peter=-
post
Post #3





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


Cytat(marcio @ 13.02.2010, 15:25:12 ) *
A gdzie tak jest napisane ze jest dobrze jak to on mowi na wiki na temat MVC pisza inaczej chyba ze mam problemy z czytaniem.

Chyba masz problemy z czytaniem: http://en.wikipedia.org/wiki/MVC_Pattern#Overview
A konkretniej zdanie "A view queries the model in order to generate an appropriate user interface".

Osobną kwestią jest to, że wikipedia to nie zbyt wiarygodne źródło, zwłaszcza jeśli chodzi o takie informacje.

Prosty przykład w MVC jaki serwuje ZF, symfony i inne frameworki:
Chcemy pobrać stronicowaną listę elementów modelu, w kontrolerze (lub też w modelu) tworzymy obiekt paginatora, mówimy mu aby pobrał takie i takie elementy. Kontroler przekazuje paginator do widoku, który wyświetla to co w nim jest.

Konsekwencje: kontroler miesza się w warstwę prezentacji, bo to widok na podstawie modelu powinien decydować o tym czy dane są stronicowane i co ile. Chcemy zmienić liczbę wyświetlanych elementów lub wyłączyć stronicowanie, paradoksalnie musimy edytować kontroler - widok i kontroler wcale nie są niezależne.

W implementacji podanej przez @Zyxa to inaczej wygląda, w widoku (na podstawie danych zawartych w modelu) zachodzi decyzja czy dana lista ma być stronicowana, czy też nie. Kontroler jedynie mówi: ten i ten widok ma wyświetlić ten i ten model, nie mówi jak ma go wyświetlić, czy to ma być paginowalna lista, czy też nie. W tej implementacji MVC widok ma więcej zadań i w przeciwieństwie do znanych frameworków dla php potrzebnych będzie wiele klas widoku do różnych zadań.

Bezpośrednie powiązanie między widokiem, a modelem jest widoczne zwłaszcza w aplikacjach desktopowych, przykładowo Java i implementacja swingowej tabeli. Klasa JTable - widok, jest też jakaś klasa odpowiedzialna za model tabeli (nie pamiętam nazwy, pewnie JTableModel (IMG:style_emoticons/default/tongue.gif) ). Model przekazuje się bezpośrednio do konstruktora JTable, to widok bezpośrednio pobiera sobie dane z modelu, model może poinformować widok o tym, że zaszła w nim jakaś zmiana, a widok odświeży się (wzorzec obserwatora - pisał o tym @Zyx) - w aplikacjach www taki feature nie jest potrzebny gdyż http jest protokołem synchronicznym. Aplikacje dektopowe, a aplikacje internetowe to całkowicie dwie różne rzeczy, w aplikacjach www (mówię tutaj o frameworkach php) utarło się że to kontroler jest bliżej modelu niż widok, który służy tylko do prezentacji danych. Ma to swoje plusy oraz minusy.
Go to the top of the page
+Quote Post

Posty w temacie
- Kikert   [MVC] Kontroler - gdzie?   5.02.2010, 13:54:28
- - bełdzio   ad1. index.php to bootstrap, czyli plik, który odp...   5.02.2010, 14:27:13
- - Kikert   OK, jeszcze jedno pytanie (ad2.) - jak to wygląda?...   5.02.2010, 14:59:44
- - blooregard   Widok juz nic nigdzie nie przekazuje, wywołuje jed...   5.02.2010, 15:05:55
- - Kikert   Czyli bootstrap inicjuje kontroler, kontroler modu...   5.02.2010, 15:07:36
- - Mephistofeles   Sprawdź sobie jak to robią popularne frameworki.   5.02.2010, 15:10:18
- - webdice   Masz model, kontroler i widok. Kontroler pobiera d...   5.02.2010, 15:12:59
- - Zyx   Kontroler nie przekazuje żadnych danych z modelu d...   5.02.2010, 15:19:20
- - blooregard   Kurczę, Zyx, teraz żes mnie zastrzelił http://ww...   5.02.2010, 15:30:47
- - Zyx   Mniej więcej właśnie o to chodzi. Architektura MVC...   5.02.2010, 16:51:15
- - Kikert   Ciekawa dyskusja się tutaj wywiązała, ale jako lai...   5.02.2010, 18:06:56
- - blooregard   @Zyx, dziękuję Ci bardzo za wyjaśnienie. W wolnej ...   5.02.2010, 22:53:03
- - batman   @Zyx Wszystko ładnie pięknie, ale to tylko teoria....   5.02.2010, 23:22:17
- - darko   To zacznijmy od tego, że nie ma jednej, a nawet je...   5.02.2010, 23:39:33
- - marcio   CytatKontroler nie przekazuje żadnych danych z mod...   6.02.2010, 00:07:11
- - Zyx   Rozmawiamy na poziomie aplikacji WWW w ogóle, pozi...   6.02.2010, 07:47:57
- - batman   ~Zyx Musisz pamiętać, że PHP != Java i impleme...   6.02.2010, 08:44:54
- - marcio   Cytat(batman @ 6.02.2010, 08:44:54 ) ...   6.02.2010, 12:17:13
- - Crozin   Ideę tego wzorca bardzo szybko i fajnie opisuje ob...   6.02.2010, 13:43:46
- - dr4ko   Pierwotnie MVC został określony tak jak przedstawi...   12.02.2010, 11:26:32
- - thek   Ja w swoich pracach najczęściej korzystam z modelu...   12.02.2010, 12:50:12
- - cojack   Cytat(Kikert @ 5.02.2010, 15:07:36 ) ...   12.02.2010, 19:48:43
- - Crozin   Cytat@Zyx nie zgadzam się z Twoją wizją MVC.Nie lu...   13.02.2010, 15:03:01
- - marcio   CytatNie lubię takich trochę personalnych docinków...   13.02.2010, 15:25:12
|- - -=Peter=-   Cytat(marcio @ 13.02.2010, 15:25:12 )...   13.02.2010, 16:08:41
- - Cysiaczek   @Zyx - Co do pobierania danych przez widok: http:/...   1.03.2010, 09:59:43
- - marcio   Jak dla mnie to kontroler powinien zawierac cala l...   1.03.2010, 12:20:46
- - WiruSSS   Witam Przepraszam, że odświeżam wątek, ale to chy...   22.03.2012, 02:29:50
- - viking   PHP jest stosowane w widoku do prostego wyświetlan...   22.03.2012, 17:55:09
- - thek   Najprostsze rozwiązanie? Kontroler przekazuje do w...   22.03.2012, 17:56:19
- - WiruSSS   tak myślałem robić jednak mam odczucie że taki spo...   22.03.2012, 23:37:55
- - viking   Tylko pamiętaj że szablony są i tak kompilowane do...   23.03.2012, 06:48:10


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: 11.06.2026 - 00:17