![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 30.08.2006 Skąd: Bełchatów Ostrzeżenie: (0%) ![]() ![]() |
Witam
W końcu skusiłem napisać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Niedawno w poszukiwaniu jakiejś teorii pozwalającej oddzielić logikę od widoku itd trafiłem na MVC. Poczytałem, wszystko ok, rozumiem, tylko problem pojawia się przy chęci sprawdzenia teorii w praktyce. MVC zakłada wyraźny podział na warstwy, które ze sobą współpracują i żadna sama w sobie dużo nie zdziała. Stąd moje pytania. 1.Od czego zacząć pisać, lub też najpierw projektować? Klasy powinny pozwalać na przeniesienie ich do innych skryptów, w takim razie (2)jak na przykład pobierać dane z bazy danych jeśli do obsługi MySQL mam osobną klasę? To na razie tyle. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() |
![]() ![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 10 Dołączył: 13.02.2007 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
Może na początek podkreślę - każdy programista ma inną wizję MVC - to tylko zwykły szablon. To tak jak szablon strony (załózmy z webmark-a, którą dobrze wspominam, niestety - już jej nie ma ;() każdy sobie to lekko przerobi, zmieni, itp. To tak gwoli ścisłości, gdyż to co niżej przedstawię, jednemu się będzie podobało, a drugiemu nie.
Przede wszystkim Kontroller ma zarządzać widokiem i modelem i nic nie wiedzieć o danych. To więc:
Teraz pewnie wiele osób się zapyta, dlaczego to Widok przechowuje w swojej zmiennej instancję klasy Model ? Ano dlatego, żeby w widoku także można było pobierać dane z modelu, gdyż to jest założeniem MVC. Przy okazji jest to wiele wygodniejsze, gdyż jak jest np. lewe menu, które posiada np. blok "losowa fotka", to potem trzeba w każdej metodzie controllera dopisywac te bzdetne linijki kodu, by pobierane były dane z modelu. A po co , skoro można to zrobić jednym zapytaniem w Widoku. Widok ma za zadanie gromadzić dane z szablonow i je zwracać controllerowi, tak więc (pomijam tutaj klasy abstrakcyjne, zeby pokazac oco chodzi - wiadomo - lepiej dziedziczyc sobie niektore metody z klasy abstrakcjii)
Model ma pobierać dane z różnych źródeł i je zwracać, czyli po prostu:
Do tego dochodzi jeszcze FrontController który pobiera sobie z routera kontroller i akcję i odpala odpowiedni kontroller i jego metodę. W moim przypadku (czyt. moj fw) jest coś takiego, że FrontController wybiera kontroller, i później jest coś takiego:
i już wszystko jasne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Mam nadzieję, że ten post rozwiąże wszelkie wątpliwości co i jak połączyć. Pozdrawiam, Matix. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 15:18 |