Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MVC - pytanie
Forum PHP.pl > Forum > PHP
Jazi
Witam,
Tak sobie czytam teraz o projekcie MVC i nie bardzo go rozumiem... :/. Z tego co się dowiedziałem, to:
* Model. Jest to warstwa, która nie ulega zmianie. Zawiera ona wszelkie klasy i metody wykorzystywane w dwóch pozostałych warstwach (zarówno te, które pobierają dane z bazy danych, jak i je do niej wrzucają).
* View. Warstwa ta odpowiada za wypisywanie użytkownikowi kodu (zazwyczaj HTML), który zauważa na swoim ekranie.
* Controller. Ta część odpowiada za używanie klas z warstwy 'Model'. Przy pomocy danych pobieranych z $_POST lub $_GET określa jakich metod w danej chwili używać. Czyli w tej warstwie istnieje połączenie z bazą danych.

Jeżeli jakoś źle to opisałem, to proszę mnie poprawić.
amii
View - ok
Model - to ogólnie logika biznesowa aplikacji tak jak mówisz zwiera klasy odpowiedzialne za komunikację z bazą danych (ale nie tylko!)
Controller - tak jak mówisz tylko bez tego połączenia z bazą danych to jest sprawa modelu.
Jazi
Cytat(amii @ 24.07.2011, 16:37:08 ) *
View - ok
Model - to ogólnie logika biznesowa aplikacji tak jak mówisz zwiera klasy odpowiedzialne za komunikację z bazą danych (ale nie tylko!)
Controller - tak jak mówisz tylko bez tego połączenia z bazą danych to jest sprawa modelu.

Czym jest "logika biznesowa aplikacji"?
Odnośnie "kontrolera" i połączenia z BD: przecież, żeby skorzystać z metody znajdującej się w modelu, która ma pobrać coś z BD, to kontroler musi mieć w tle włączone połączenie z bazą, nie? Czy może każde połączenie otwiera się tylko dla pojedynczej metody? Czyli każda metoda włącza swoje własne połączenie?
Spawnm
Robisz model do zarządzania db smile.gif
Jazi
Wybacz, ale nie rozumiem biggrin.gif. Na jakiej zasadzie?
Spawnm
Na zasadzie że robisz model_db który nawiązuje połączenie z bazą dzięki np. silnikowi pdo oraz go przetrzymuje dostarczając zarazem dodatkowych funkcjonalności smile.gif
Teraz model labo przekazujesz do kolejnych przez dependency injection albo tworzysz singleton lub registry do których odwołujesz się w poszczególnych modelach.
Najważniejsze abyś nie wsadzał danych bazy czy też zapytań sql do kontrolera, jest to logika którą ma zająć się model.
Jazi
Cytat(Spawnm @ 24.07.2011, 21:49:53 ) *
Na zasadzie że robisz model_db który nawiązuje połączenie z bazą dzięki np. silnikowi pdo oraz go przetrzymuje dostarczając zarazem dodatkowych funkcjonalności smile.gif
Teraz model albo przekazujesz do kolejnych przez dependency injection albo tworzysz singleton lub registry do których odwołujesz się w poszczególnych modelach.

Czyli mam rozumieć, że modelów może być kilka? Czy można powiedzieć, że jeden model to jedna klasa? Kwestia łączenia się z bazą danych ma należeć do jednego modelu (który inicjalizujemy jako pierwszy) i on za pośrednictwem metod dependency injection, singleton oraz registry ma udostępniać dane o połączeniu z bazą danych do reszty modeli? Po wykonaniu się odpowiednich modeli, ten pierwszy zainicjalizowany model z bazą danych zamyka połączenie?
Następne moje pytanie, to jaka z wymienionych metod jest najlepsza?
Proszę także, aby ktoś mi wytłumaczył metody singleton oraz registry.
Spawnm
singleton jest wzorcem projektowym, na phpedia.pl masz przykłady.
Co do dependency injection itd. to korzystaj z google.

Cytat
...ten pierwszy zainicjalizowany model z bazą danych zamyka połączenie?

Nie zamyka połączenia z bazą smile.gif

Jazi
Cytat(Spawnm @ 24.07.2011, 23:28:45 ) *
singleton jest wzorcem projektowym, na phpedia.pl masz przykłady.
Co do dependency injection itd. to korzystaj z google.

A ten 'registry'?

Cytat(Spawnm @ 24.07.2011, 23:28:45 ) *
Nie zamyka połączenia z bazą smile.gif

Jak to? To połączenie z bazą jest otwarte na cały czas generowania się strony www?
lukaskolista
Polaczenie jest otwarte do momentu w ktorym je zamkniesz
Jazi
Cytat(lukaskolista @ 27.07.2011, 14:03:42 ) *
Polaczenie jest otwarte do momentu w ktorym je zamkniesz

To czemu Spawnm pisze, że nie zamyka połączenia. Chyba, że chodzi o to, że samo nie zamyka i ja je muszę zamknąć?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.