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.

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> 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
destroyerr
post 11.10.2010, 17:23:58
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Wszystkie wzorce mają być w jednym temacie? Jeśli chcesz tylko porównywać MVP i MVC to zaznacz to w temacie.
Go to the top of the page
+Quote Post
Spawnm
post 11.10.2010, 17:29:07
Post #3





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




Temat jest poświęcony wszystkim wzorcom architektonicznym w php.
W tym MVC, MVP, HMVC.
Go to the top of the page
+Quote Post
Crozin
post 12.10.2010, 12:52:35
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Może i lekko flameogennie, ale...

Żadnego z wymienionych nie da się w sumie zrealizować w PHP. Lekko "ułomne" implementacje (pozbawione części założeń) są możliwe, ale wtedy już o MVC, MVP, MVA, PAC czy "jakie mi się tam inne 3-4 literki na myśl nasuną" nie można mówić (a przynajmniej nie powinno się).
Żaden z tych wzorców nie został stworzony z myślą o środowisku HTTP (a to w nim przecież pracujemy), ani tym bardziej do rozwiązywaniu problemów w nim panujących.

Swoją drogą chętnie zobaczyłbym jakąś sensowną implementację któregokolwiek z nich (a raczej tego "czegoś" co ma się z nich wywodzić) w dowolnym języku "webowym", w jakiejś większej aplikacji.
Go to the top of the page
+Quote Post
marcio
post 12.10.2010, 12:59:14
Post #5





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

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


Podobnie nowszy asp.net nazywa sie jakos asp mvc czy on implementuje "prawdziwy" mvc?

Ten post edytował marcio 12.10.2010, 12:59:54


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Theqos
post 12.10.2010, 13:45:13
Post #6





Grupa: Zarejestrowani
Postów: 49
Pomógł: 8
Dołączył: 5.12.2008

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


Najlepszym wzorcem jest nieużywanie wzorców dla samego używania. Można nawet powiedzieć, że wzorce to zło. Warto je poznać w celach komunikacyjnych i dla jakiegoś tam poszerzenia horyzontów, ale nic nie zastąpi myślenia. Potem widać takich "ekspertów" z biegunką wzorcową wpychających je wszędzie na siłe i wyzywających ludzi od debili "bo to nie jest prawdziwe MVC".
Go to the top of the page
+Quote Post
Spawnm
post 12.10.2010, 19:35:08
Post #7





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




@Crozin - skoro w php nie da się zaimplementować mvc czy mvp to powiedz mi co implementują obecne fw? Wydawało mi się że wzorzec mvc , potem ktoś mi próbował udowodnić że mvp a teraz ?

+ z jakiego wzorca ty korzystasz ?
Go to the top of the page
+Quote Post
sniver
post 12.10.2010, 20:13:28
Post #8





Grupa: Zarejestrowani
Postów: 159
Pomógł: 5
Dołączył: 31.08.2007

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


a co to jest?
Kontroler steruje aplikacją i wywołuje moduł i dalszą kontrolę przejmuje "subkontroler" (nie wiem jak to nazwać). Subkontroler składa z klocków aplikacje.

Te klocki wyglądają tak:
widok - moduł (który wylicza) i warstwa danych (w zależności z czego ma brać dane: plik, baza, czy co innego).

widok jest wysyłany do składaka (nazwałem to tak bo składa do kupy warstwe wyglądu) i wyświetla całość na ekranie...

jak to nazwać? takie misz-masz?

efekt działania jest normalny - jak w przypadku waszych magicznych cudów niewidów...


--------------------
Go to the top of the page
+Quote Post
marcio
post 12.10.2010, 22:04:50
Post #9





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

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


@sniver to o czym mowisz to "hmvp/hmvc" dalem w cudzyslowia zeby nie bylo, ale ich idea opiera sie wlasnie na modularnosci.
Kazdy modul ma swoj/e widoki i modele i kontroler.
Cytat
Kontroler steruje aplikacją i wywołuje moduł i dalszą kontrolę przejmuje "subkontroler" (nie wiem jak to nazwać). Subkontroler składa z klocków aplikacje.

Przewaznie mowi sie na to frontctrl i blockctrl smile.gif


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Crozin
post 13.10.2010, 08:42:33
Post #10





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Podobnie nowszy asp.net nazywa sie jakos asp mvc czy on implementuje "prawdziwy" mvc?
Szczerze powiedziawszy nie wiem. Podobnie jak nie wiem jak się ma sprawa ze Spring-iem MVC i innymi narzędziami z bardziej "dojrzałych" platform.

@Theqos: w pewnym sensie zgadzam się z Tobą, ale lekko irytujące jest jak ktoś nazywa przykładowo AJAXa językiem lub "coś kompletne nie związanego z MVC" MVC. Tak mi się skojarzyło:


Cytat
to powiedz mi co implementują obecne fw?
Ciężko powiedzieć. Coś co nazwałbym Akcją-ŹródłemDanych-Szablonem. W przypadku niektórych FW (np. Kohana) część z tych warstw nachodzi na siebie.

Ten post edytował Crozin 13.10.2010, 08:42:58
Go to the top of the page
+Quote Post
FanFataL
post 13.10.2010, 09:50:04
Post #11





Grupa: Przyjaciele php.pl
Postów: 13
Pomógł: 0
Dołączył: 6.09.2005
Skąd: Kraków / Katowice / Bydgoszcz

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


@Crozin nie bardzo się mogę z Tobą zgodzić.

Również mnie irytuje fakt gdy np. ajaxa nazywa się językiem programowania etc, ale mówienie o tym że MVC/MVP nie zostały stworzone z myślą o HTTP i dlatego żaden język webowy nie może implementować MVC/MVP wprost jest bzdurą.

Jak doskonale wiesz wzorce projektowe są uniwersalnymi rozwiązaniami pojawiających się problemów. Wzorce projektowe są tylko wytycznymi jak coś robić żeby było dobrze i spójnie - jeżeli zrobisz inaczej wiadomo że mijasz się z definicją danego wzorca (modyfikujesz go). Ale jeżeli postępujesz (kodujesz) zgodnie z założeniami danego wzorca to nada go używasz - nie ważne czy używasz php, jsp czy innego języka webowego. To tak jakbyś powiedział że nie można implementować Singletona do php bo mamy klonowanie.

Z praktycznego punktu widzenia programowania webowego i używania fw który opiera się na architekturze MVC - programujemy używając wzorca MVC!
Natomiast z punktu widzenia odbiorcy/usera masz rację że w grę wchodzi protokół HTTP i dochodzi kolejna warstwa jaką jest browser:


Na koniec powiem, że jeżeli udało się zaimplementować wzorce projektowe z architektury do informatyki, to dlaczego niby miałoby się nie dać zaimplementować MVC do języków webowych?

Przypominasz zatwardziałego JAVA'owca który krzyczy "OMG, OMG on pisze w językach skryptowych - on nie jest programistą bo nie kompiluje" ...

Pozdrawiam winksmiley.jpg
...


--------------------
The people who are trying to make this world worse are not taking a day off. How can I? - Light up the darkness
Go to the top of the page
+Quote Post
Crozin
post 13.10.2010, 13:19:40
Post #12





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@FanFataL: Łady rysunek, ale brakuje mi w nim jednego - gdzie są strzałeczki pomiędzy Widokiem, a Modelem? - bo to one są w sumie najważniejsze. I dlaczego dane płyną przez kontroler, skoro Widok powinien sam odpytać Model, odpowiednio go do tego przygotowując wcześniej?

O ile jeszcze mogę zrozumieć brak strzałeczki z Modelu do Widoku (bo środowisko webowe uniemożliwia istnienie takiej), o tyle brak strzałeczki z Widoku do Modelu i podpis "Resulting Data Arrays" z Modelu do Kontrolera (gwoli ścisłości: Model może zwracać do Kontrolera jakieś dane, ale nie w celu przekazania ich przez ostatniego do Widoku) to zaprzeczenie idei tego wzorca.

Schemat, który pokazałeś to model wykorzystywany w większości FW. I dobrze! On jest całkiem dobry, sam pracując w PHP z reguły z czegoś takiego korzystam. Ma nawet swoje zalety względem MVC. Ale... on nie ma wiele wspólnego z MVC samym w sobie. Istnieje trójpodział aplikacji, ale działa on inaczej niż w przypadku tego cholernego MVC. Co więcej taki schemat z reguły oznacza, że Kontroler wykonuje większość logiki, która powinna spocząć na Widoku, a ten ostatni jest ograniczany do szablonów HTML/PDF/innych.

Cytat
Ale jeżeli postępujesz (kodujesz) zgodnie z założeniami danego wzorca to nada go używasz - nie ważne czy używasz php, jsp czy innego języka webowego.
I o to rozchodzi się cały problem. Kod, który od początku nie jest pisany z założeniami MVC, jest nazywany kodem MVC. Nie byłoby problemu, gdyby nazywano go kodem XYZ, który wywodzi się z MVC, ale nazywanie czegoś diametralnie innego (bo to już nie jest modyfikacja, to jest kompletnie inna architektura) czymś czym nie jest?
Ot weźmy takiego MVP. "Twórcy" wzięli MVC, przerobili go i trzeźwo myśląc uznali, że modyfikacje są na tyle duże, że to już nie jest MVC - więc nazwali to sobie MVP. O ile się nie mylę w przypadku takiego MVVM było podobnie. MVA - też podobnie.

Cytat
Przypominasz zatwardziałego JAVA'owca który krzyczy "OMG, OMG on pisze w językach skryptowych - on nie jest programistą bo nie kompiluje" ...
Nie, ponieważ nie uważam, by model używany w FW był zły. On nie jest lepszy, nie jest gorszy, jest po prostu inny.
Go to the top of the page
+Quote Post
Spawnm
post 13.10.2010, 14:05:15
Post #13





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




Co do schematu od FanFataL to rzeczywiście razi brak model<->vidok.
Bark kontaktu vidoku z modelem wykorzystuje mvp z tego co pamiętam.

Cytat
O ile jeszcze mogę zrozumieć brak strzałeczki z Modelu do Widoku (bo środowisko webowe uniemożliwia istnienie takiej), o tyle brak strzałeczki z Widoku do Modelu

Zobacz jak działają modele typu pager smile.gif

Co do
Cytat
jak ktoś nazywa przykładowo AJAXa językiem

Jako że miałem styczność z takimi osobnikami i sam byłem pytany czemu tylko js a nie ajax -
Mówiąc programuję w ajaxsie osoba ma na myśli javascript z ajaxem. To tak jak kiedyś rozbijano js na zwykły js i js z dhtml.
Dziś już się tego nie spotyka , wszyscy już się przyzwyczaili że js ma getElementById() ale pojawił się ajax więc jest nowa moda.
Osobiście jednak wolę gdy ktoś mówiąc js ma na myśli js z wszystkimi bajerami winksmiley.jpg
Go to the top of the page
+Quote Post
sniver
post 13.10.2010, 15:03:11
Post #14





Grupa: Zarejestrowani
Postów: 159
Pomógł: 5
Dołączył: 31.08.2007

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


ajax, ajaksem...z definicji jest to połączenie aplikacji z serwerem i przeładowanie części strony bez konieczności ponownego odświerzania. Odbywa się to za pośrednictwem javascript i xml...

no i dobra tyle wiemy, a ja i tak wole format json, a nie xml. No i mniej z nim problemu smile.gif
No i jest implementowany przez jquery...

A najlepsze jest to że każdy piszę że to technologia (wrrr..) jak by to było niewiadome co..a przecież to tylko dodatkowy bajer w java script...
Swoją drogą widzę że w wiki też pisze że to technologia - więc może zmienię zdanie sciana.gif

Co do tych wszystkich wzorców - rozumiem gdy ma to na celu usystematyzowanie i stworzenie wszędzie "takiego samego kodu". Wiele z firm dlatego wykorzystuje ZF, Kohane czy inny fw. Czy jest to warunek konieczny? Według mnie nie - bo i tak efektem działania tego całego zamieszania jest..uwaga: zwykła strona www! A klient czy który odwiedza strone i tak nie wie czy to MVC zaimplementowane w PHP, JSP czy innym języku...

Co do tego obrazka @FanFataL przypomina mi się full-ajax'owa aplikacja. Widok odwołuje się do różnych części aplikacji i uzupełnia stronę - ja to tak rozumiem...


--------------------
Go to the top of the page
+Quote Post
Crozin
post 13.10.2010, 15:05:30
Post #15





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Zobacz jak działają modele typu pager
Szczerze... nie mam pojęcia o co Ci chodzi.
Go to the top of the page
+Quote Post
FanFataL
post 13.10.2010, 15:19:11
Post #16





Grupa: Przyjaciele php.pl
Postów: 13
Pomógł: 0
Dołączył: 6.09.2005
Skąd: Kraków / Katowice / Bydgoszcz

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


Cytat(Crozin @ 13.10.2010, 12:19:40 ) *
@FanFataL: Łady rysunek, ale brakuje mi w nim jednego - gdzie są strzałeczki pomiędzy Widokiem, a Modelem? - bo to one są w sumie najważniejsze. I dlaczego dane płyną przez kontroler, skoro Widok powinien sam odpytać Model, odpowiednio go do tego przygotowując wcześniej?

Rysunek nie mój, ale ładny dlatego wybrałem smile.gif

Cytat(Crozin @ 13.10.2010, 12:19:40 ) *
O ile jeszcze mogę zrozumieć brak strzałeczki z Modelu do Widoku (bo środowisko webowe uniemożliwia istnienie takiej), o tyle brak strzałeczki z Widoku do Modelu i podpis "Resulting Data Arrays" z Modelu do Kontrolera (gwoli ścisłości: Model może zwracać do Kontrolera jakieś dane, ale nie w celu przekazania ich przez ostatniego do Widoku) to zaprzeczenie idei tego wzorca.

Masz racje że brakuje tej strzałki - w większości Fw można taki rezultat osiągnąć bez problemu.

Cytat(Crozin @ 13.10.2010, 12:19:40 ) *
Schemat, który pokazałeś to model wykorzystywany w większości FW. I dobrze! On jest całkiem dobry, sam pracując w PHP z reguły z czegoś takiego korzystam. Ma nawet swoje zalety względem MVC. Ale... on nie ma wiele wspólnego z MVC samym w sobie. Istnieje trójpodział aplikacji, ale działa on inaczej niż w przypadku tego cholernego MVC. Co więcej taki schemat z reguły oznacza, że Kontroler wykonuje większość logiki, która powinna spocząć na Widoku, a ten ostatni jest ograniczany do szablonów HTML/PDF/innych.

Inność polega tylko (albo aż) na miejscu wykonywania logiki.

Cytat(Crozin @ 13.10.2010, 12:19:40 ) *
I o to rozchodzi się cały problem. Kod, który od początku nie jest pisany z założeniami MVC, jest nazywany kodem MVC. Nie byłoby problemu, gdyby nazywano go kodem XYZ, który wywodzi się z MVC, ale nazywanie czegoś diametralnie innego (bo to już nie jest modyfikacja, to jest kompletnie inna architektura) czymś czym nie jest?
Ot weźmy takiego MVP. "Twórcy" wzięli MVC, przerobili go i trzeźwo myśląc uznali, że modyfikacje są na tyle duże, że to już nie jest MVC - więc nazwali to sobie MVP. O ile się nie mylę w przypadku takiego MVVM było podobnie. MVA - też podobnie.

Dokładnie masz racje, samo MVP jest wykorzystywane praktycznie w każdym Fw ale dalej uważam że wszystkie frameworki które są pisane o wzorzec MVC (nawet jeśli są jego modyfikacją) nie robią nic złego w tym że wykorzystują trzy literki M V C.

Żeby było jasne, zgadzam się że to nie jest Full Strict MVC ale nie waham się mówić że używając np ZendFramework wykorzystuje podwaliny MVC - bo z tego się wywodzi.

Cytat(sniver @ 13.10.2010, 14:03:11 ) *
Co do tego obrazka @FanFataL przypomina mi się full-ajax'owa aplikacja. Widok odwołuje się do różnych części aplikacji i uzupełnia stronę - ja to tak rozumiem...

Tutaj nie ma znaczenia czy to ajax czy nie ajax. To jest reprezentacja uporządkowanego działania aplikacji webowej.

Btw. Chyba jest to lekki EOT

Pozdrawiam winksmiley.jpg
...


--------------------
The people who are trying to make this world worse are not taking a day off. How can I? - Light up the darkness
Go to the top of the page
+Quote Post
sniver
post 13.10.2010, 15:30:31
Post #17





Grupa: Zarejestrowani
Postów: 159
Pomógł: 5
Dołączył: 31.08.2007

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


@FanFataL: Co to znaczy EOT?


--------------------
Go to the top of the page
+Quote Post
Crozin
post 13.10.2010, 15:48:11
Post #18





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Inność polega tylko (albo aż) na miejscu wykonywania logiki.
Nie, nie tylko o miejsce chodzi. W MVC mamy w pewnym sensie podział na logikę widoku (tj. widok) i kontroler. W dodatku widok może wykorzystać szablony. Natomiast chyba wszystkie PHPowe FW zaprojektowane są tak, że widok = szablon (co jest już bardzo poważnym uchybieniem), a kontroler zajmuje się logiką widoku.
Tą różnicę chyba najlepiej widać w admin generatorze Symfony 1.x. FW ten realizuje właśnie taki "mvc" i jak wygląda w nim generowanie panelu admina (korzystając z generatora)? Zamiast zrobić coś w stylu:
  1. public function listAction() {
  2. return new ListView(new NewsModel());
  3. }
I tak dla każdego Modelu, to nie... wszystkie kontrolery/szablony muszą być generowane. ListView, FilteredListView, FormView, DetailView - trzy widoki wystarczyłyby do wyświetlania właściwie wszystkiego. Później kontrolery ograniczają się do wybrania odpowiedniego modelu (np. aktualności, posty etc.).

PS. Kilka miesięcy temu spłodziłem taki post: http://forum.php.pl/index.php?s=&showt...st&p=771967 Przedstawiłem tam przykładową (bardzo prymitywną) implementację "web-MVC". Jak widzisz diametralnie różni się to od schematu typowych PHPowych FW.

Ten post edytował Crozin 13.10.2010, 15:50:06
Go to the top of the page
+Quote Post
marcio
post 13.10.2010, 15:57:37
Post #19





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

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


@sniver http://pl.wiktionary.org/wiki/EOT

Co do tematu to tez zgadzam sie z tym ze jesli dana aplikacja jest zaprojektowana w sposob gdzie widok = szablon to jest blad bardzo to ogranicza i do tego powoduje ze nawet nie mozna zaimplementowac "mvc"


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
destroyerr
post 13.10.2010, 16:07:17
Post #20





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


@Crozin symfony jednak ma widok w Twoim rozumieniu, zresztą podobnie jak Agavi (tutaj jest to jeszcze lepiej zorganizowane). To, że nie zostało to wykorzystane do AG to się zgadzam i żałuję.
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
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: 19.03.2024 - 10:50