@!*!: 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.