![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 15.10.2009 Skąd: gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Nie jestem zawodowcem jeżeli chodzi o programowanie w PHP i postanowiłem nieco podnieść swoje umiejętności i poszerzyć wiedzę. Najczęściej pracuje na CodeIgniter i w związku z tym zacząłem przeglądać tutki (szczególnie video) i troszkę się zaskoczyłem. Kiedyś zgłębiając zasady wzorca MVC wielokrotnie spotykałem się z kilkoma fundamentalnymi zasadami takimi jak: ... -kod html,JS,CSS może występować tylko w widoku -kod SQL,kod operacji na plikach, WS itp może występować tylko w modelu -kontroler pobiera dane od usera, jak trzeba przepuszcza je przez model i to co otrzyma z modelu wrzuca do widoku gdzie ubierane jest to w znaczniki i wyświetlane (więc kontroler raczej szczupłym tworem jest) ... No i na owych tutorialach (mimo iż widać że programiści od wczoraj nie dziobią w PHP) to jest wolna amerykanka w stosunku do tych zasad. Najczęściej cała masa html jest produkowana w kontrolerze, a i w kilku przypadkach w modelu tworzony jest gotowy kod html do przesłania przez kontroler do widoku. Co o tym sądzicie ? pozdrawiam KB |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@!*!: Nie ma miejsca na interpretację wzorca. Własna, nowatorska implementacja? Tak! Ale nie interpretacja. Przez to nazywanie każdej wielowarstwowej architektury MVC-em, wzorzec ten de facto przestał być wzorcem. Niestety teraz pisząc "tu jest zastosowane MVC" nikt nie wie czego się spodziewać. I bynajmniej nie chodzi tu o nieznane szczegóły implementacji - chodzi o całą architekturę, która potrafi być zgoła odmienna.
Jak sam wspomniałeś istnieją odłamy MVC, np. wspomniany MVP czy MVVM. To nie są żadne odłamy/warianty tylko inne wzorce, o których co najwyżej można powiedzieć "MVC-like" albo, że pierwotnie wywodziły się z MVC. Ich autorzy - w przeciwieństwie do tego co widzimy dzisiaj - zauważyli, że w ich architekturze istnieją zasadnicze różnice względem MVC więc zrobili najprostszą, a zaraz jedyną poprawą rzecz - nadali swojemu tworowi inną nazwę by uniknąć niejednoznaczności. Zresztą widać to chociażby po kilku schematach jakie zostały tutaj wrzucone - część z nich nie ma kompletnie nic wspólnego ze sobą. @bor1904: To co podałeś to schematy całego żądania HTTP - nieco bardziej ogólnego procesu. Przedstawiają one architekturę jaką znajdziemy w większości PHP-owskich frameworków, z Symfony czy Zendem na czele. Na wikipedii jest całkiem sensowny jak na Wiki artykuł n/t tego wzorca: http://en.wikipedia.org/wiki/Model%E2%80%9...80%93controller Po przeczytaniu go, powinieneś zauważyć, że pokazane przez Ciebie schematy nie za bardzo pasują. Co więcej powinieneś zauważyć, że w środowisku protokołu HTTP bardzo ciężko jest zaimplementować MVC. Zresztą MVC to jedynie wzorzec skupiający się na interakcji użytkownika z aplikacją, co stanowi jedynie małą część całej architektury aplikacji. W pogoni za "trendem MVC" praktycznie zapomniano w środowisku PHP o znacznie istotniejszym fragmencie aplikacji jakim jest przetwarzanie danych. Nie znam PHP-owego frameworka, który spróbowałby chociaż podjąć ten temat - chodzi tu o takie warstwy aplikacji jak warstwa logiki biznesowej, warstwa usług, dostępu do danych i interakcji pomiędzy nimi. Stąd później takie potworki jak korzystanie z ORM-a w kontrolerach czy przekazywanie danych z kontrolerów do widoków, gdzie te ostatnie utożsamiane są po prostu z szablonami. Ach, no i oczywiście pomiędzy warstwą modelu (czyli ta najbardziej skomplikowana, rozbudowana i przez MVC kompletnie nieopisana - bo to nie jest zadanie dla tego wzorca), a ORM-em właściwie można postawić znak równości w większości projektów. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 14:19 |