Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zasady pisania na forum Pro

Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.

> Wzorce architektoniczne
Spawnm
post 11.10.2010, 17:06:49
Post #1





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




Witam,
jako że nie od dziś można zaobserwować rozsiane po blogach i forum (forach?) posty dotyczące MVC czy MVP
proponuję rozmowę na temat wzorców architektonicznych w php.


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post 8.01.2011, 21:34:59
Post #2





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




Czy ja wiem... Jak dla mnie to podane dwa przykłady nie różnią się wiele jeśli chodzi o efekt końcowy. Czemu? Ponieważ i tak najpewniej do widoku trafią te same dane w obu wypadkach gdyby programista trzymał się minimalizmu. Kto pośle do widoku obiekt z 50 zmiennymi, skoro widok wymaga kilku zaledwie? KISS się kłania. W pierwszym wypadku zapewne kontroler gdzieś i tak wywoła model by mu te dane podesłał. Czy będzie taka różnica wielka między wysłaniem żądania danych do modelu by potem te dane (zapewne nawet nie tknięte jakąkolwiek metodą, helperem, whatever) wysłać do widoku (który i tak sobie je zinterpretuje wedle wewnętrznych mechanizmów), a bezpośrednim zestawieniem modelu i widoku? Dla mnie to tylko ciut inny zapis. Różnica w 2, góra 3 linijkach. Ogólnie to co napisałeś to więc nadal nie MVC dla mnie. Gdyby jedynym parametrem było tylko określenie widoku to bym się zgodził. zauważ, że w obu wypadkach i tak nakazujesz by widok skorzystał z określonych danych, tylko raz dajesz mu już konkretne, a w tym drugim mówisz by użył konkretnego modelu. Tak czy inaczej wymuszasz zestawienie tylko że albo pośrednio, albo bezpośrednio.

IMHO MVC ma miejsce gdy kontroler nawet nie musi zestawiać tego połączenia. Kontroler woła po prostu model, który sam decyduje, patrząc na dane, jaki widok wywołać. I vice versa. Kontroler chce dane w określonym widoku, a ten na podstawie owego żądania określa jaki model ma wywołać. Zauważ, że w www jest trudno uzyskać taką autonomię warstw. Trudno bowiem by widok widoczny u usera samodzielnie wywołał model na serwerze bez udziału pośrednika przetwarzającego żądanie. I stąd mamy MVP, czyli to Presenter wie jakie pary modelu i widoku wywołać, by je zestawić. Dzięki temu ten sam element może być wykorzystywany wielokrotnie do różnych celów. Najważniejszy jest tylko "styk" modelu i widoku. Muszą tutaj dane być identyczne zarówno dla strony wysyłającej, jak i odbierającej by zestawienie się powiodło. Jeśli wybiorę widok to musi mi Presenter podesłać dane przez ów widok wymagane. A to, z jakiego modelu, to już mało istotne. Z kolei wybierając model Presenter musi określić w jakiej formie zwrócić. Czy widokiem ma być plik strony www czy może wygenerowany pdf. I właśnie tak działają chyba niemal wszystkie frameworki php. Jawnie zestawiasz te połączenia. To dalekie od autonomii warstw.


--------------------
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

Posty w temacie
- Spawnm   Wzorce architektoniczne   11.10.2010, 17:06:49
- - destroyerr   Wszystkie wzorce mają być w jednym temacie? Jeśli ...   11.10.2010, 17:23:58
- - Spawnm   Temat jest poświęcony wszystkim wzorcom architekto...   11.10.2010, 17:29:07
- - Crozin   Może i lekko flameogennie, ale... Żadnego z wymie...   12.10.2010, 12:52:35
- - marcio   Podobnie nowszy asp.net nazywa sie jakos asp mvc c...   12.10.2010, 12:59:14
- - Theqos   Najlepszym wzorcem jest nieużywanie wzorców dla sa...   12.10.2010, 13:45:13
- - Spawnm   @Crozin - skoro w php nie da się zaimplementować m...   12.10.2010, 19:35:08
- - sniver   a co to jest? Kontroler steruje aplikacją i wywołu...   12.10.2010, 20:13:28
- - marcio   @sniver to o czym mowisz to "hmvp/hmvc" ...   12.10.2010, 22:04:50
- - Crozin   CytatPodobnie nowszy asp.net nazywa sie jakos asp ...   13.10.2010, 08:42:33
- - FanFataL   @Crozin nie bardzo się mogę z Tobą zgodzić. Równi...   13.10.2010, 09:50:04
- - Crozin   @FanFataL: Łady rysunek, ale brakuje mi w nim jedn...   13.10.2010, 13:19:40
- - Spawnm   Co do schematu od FanFataL to rzeczywiście razi br...   13.10.2010, 14:05:15
- - sniver   ajax, ajaksem...z definicji jest to połączenie apl...   13.10.2010, 15:03:11
- - Crozin   CytatZobacz jak działają modele typu pagerSzczerze...   13.10.2010, 15:05:30
- - FanFataL   Cytat(Crozin @ 13.10.2010, 12:19:40 )...   13.10.2010, 15:19:11
- - sniver   @FanFataL: Co to znaczy EOT?   13.10.2010, 15:30:31
- - Crozin   CytatInność polega tylko (albo aż) na miejscu wyko...   13.10.2010, 15:48:11
- - marcio   @sniver http://pl.wiktionary.org/wiki/EOT Co do t...   13.10.2010, 15:57:37
- - destroyerr   @Crozin symfony jednak ma widok w Twoim rozumieniu...   13.10.2010, 16:07:17
- - Zyx   Kilka tygodni temu jako podsumowanie tej dyskusji ...   10.12.2010, 20:47:50
- - cojack   Cytat(tego prawdziwego):[   3.01.2011, 20:35:54
- - phpowiec84   Witam Jakis czas temu wykonałem framwork którym d...   3.01.2011, 20:54:25
- - thek   Cojack... Nie bądźmy złośliwi Czysty MVC jest nie...   3.01.2011, 21:26:11
- - Zyx   phpowiec84 -> fajne te zaokrąglone ramki. Niezł...   3.01.2011, 22:34:02
- - cojack   thek no ale tego Cytat(tego prawdziwego) nie rozum...   3.01.2011, 23:05:56
- - thek   Najprawdopodobniej moje rozumienie wzorca MVC jest...   4.01.2011, 12:19:22
- - Cysiaczek   Wy nadal to samo... Pisanie czegokolwiek po to ty...   4.01.2011, 13:26:29
- - wookieb   CytatPisanie czegokolwiek po to tylko, aby impleme...   4.01.2011, 14:10:52
- - thek   A prawda jak zwykle pośrodku Cysiaczek ma rację c...   4.01.2011, 15:00:08
- - wookieb   Cytat(thek @ 4.01.2011, 15:00:08 ) Ni...   4.01.2011, 15:21:18
- - thek   Z komputerem i prockiem to trochę zły przykład Ko...   4.01.2011, 16:10:47
- - wookieb   No i właśnie to co ty teraz zrobiłeś jest popadani...   4.01.2011, 16:15:36
- - thek   To co wskazałem to oczywiście przesada jak sam zau...   5.01.2011, 00:38:33
- - Cysiaczek   Nie miałem zamiaru uderzać w system nazewnictwa. P...   7.01.2011, 18:27:48
- - Crozin   @Cysiaczek: Głupoty piszesz. Mówiąc "MVC...   7.01.2011, 19:50:20
- - Cysiaczek   @Crozin, Pokaż mi konkretny i absolutnie właściwy ...   7.01.2011, 20:45:38
- - Crozin   Chyba tutaj chciałeś podlinkować: http://pl.wikipe...   7.01.2011, 23:08:07
- - Cysiaczek   Link dałem dokładnie taki jaki chciałem. Tak, masz...   8.01.2011, 20:20:53
- - thek   Czy ja wiem... Jak dla mnie to podane dwa przykład...   8.01.2011, 21:34:59
- - Cysiaczek   IMHO różnica jest dość ostra, w drugim przypadku m...   8.01.2011, 23:00:00
- - thek   Jak dla me różnica jest tylko taka, że w 1 przypad...   8.01.2011, 23:27:31
- - Crozin   Niektórzy zapomnieli, że w MVC warstwa widoku to n...   9.01.2011, 14:50:19
- - quality   @Crozin piszesz ze MVC nie jest stworzone do HTTP,...   18.02.2011, 15:48:32
- - baldRASCAL1986   Nie mogę zrozumieć jednej rzeczy... Po co ciągle w...   18.04.2011, 13:06:40
- - marcio   dyskusja umarla smiercia naturalna....   5.05.2011, 13:55:46
- - Sagnitor   A jakby tak spojrzeć na to z innej strony. Czy jes...   5.07.2011, 15:16:04
- - LSM   Dorzucę swoje trzy grosze. Ciekawym jest fakt, że ...   25.09.2011, 23:11:07
- - Crozin   @LSM: To co pokazałeś to jedynie podział aplikacji...   25.09.2011, 23:18:32
- - LSM   Widok opisuje, jak wyświetlić pewną część modelu w...   25.09.2011, 23:25:27


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 Wersja Lo-Fi Aktualny czas: 24.06.2024 - 00:42