Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]podział na klasy
perhydrol
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 11.12.2006

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


Witam,

od jakiegoś czasu eksperymentuję z obiektowym PHP, jednak moje strukturalne myślenie skutecznie mi to utrudnia.
Tylko proszę nie odsyłajcie do przeszukiwania tematów jak wielokrotnie twierdzicie iż temat był poruszany tysiące razy,
ja jednak szukając odpowiedzi w postach już istniejących na tym forum nie znalazłem satysfakcjonującej odpowiedzi.

Mam prośbę, czy mógł by ktoś mi wypisać na przykładzie sklepu internetowego podział na klasy, oraz zakwalifikować je do odpowiednich części:
Model, View, Controller

Coś w stylu listingu klas, i nie jest to z mojej strony wyręczanie się Wami, a jedynie chciał bym dostrzec jak szczegółowo należy podejść do podziału danej dziedziny sklepu internetowego na klasy. Dzięki przypisaniu ich do odpowiednich części MVC, myślę że będę mógł szybciej i lepiej zrozumieć to z czym się borykam. Dodam może że do UML-a używam "NetBeans IDE 6.7.1"

a interesujące mnie rozwiązanie to coś w stylu:

  1. class DB_Connect // klasa inicjująca połączenie z baza danych
  2. class DB_View // klasa zapytań do bazy danych
  3. .... // tu kolejne pytanie czy jest sens przechowywać wszystkie zapytania do bazy danych, np SELECT ... w jednym pliku?
  4. .... // no i jeszcze jak by mógł mi ktoś zaznaczyć która klasa do jakiej części modelu MVC się zalicza


Ten post edytował nospor 14.10.2009, 23:08:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jmail
post
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

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


dr4ko czekaj czekaj. czy to nie jest tak, że model to jest własnie baza danych? przecież DAL jest właśnie warstwą programowalną modelu. to do niej kontroler musi wysłać dane i powiedzieć co z nimi zrobić. Nie możesz mówić, że kontroler ma być nieświadomy modelu bo on musi model poprosić o konkretne dane, albo konkretne dane mu przekazać.

Z widokiem masz rację bezdyskusyjnie.

Cytat
Kontroler jest odpowiedzialny za odczyt danych z bazy danych (utworzenie modelu) i przekazanie ich do warstwy widoku (interfejsu użytkownika). Gdy użytkownik wybierze pokaż kolejne, wtedy odwołanie jest przekazywane do kontrolera, który ponownie pobiera dane i przekazuje do widoku tą samą drogą.


co z resztą jest zbieżne z tym czego mnie na uczelni uczono

Cytat
Praktycznie każda aplikacja WWW korzysta z baz danych - operacje na bazach stanowią modele danych. Szablony HTML odpowiedzialne za wygląd i wyświetlanie danych są częścią widoków (np. Smarty). Kod odpowiedzialny za wykonanie określonych operacji (spinający wszystko razem) tworzy sterowniki.


Poza tym jak to sobie wyobrażasz? Kontroler niświadomy modelu to co? Podaj mi jakiekolwiek dane a ja z nimi nie będę wiedział co zrobić? oO Przecież to się kupy logicznej nie trzyma oO
Go to the top of the page
+Quote Post
dr4ko
post
Post #3





Grupa: Zarejestrowani
Postów: 49
Pomógł: 4
Dołączył: 16.07.2008
Skąd: Gdańsk

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


Cytat(jmail @ 15.10.2009, 16:03:40 ) *
dr4ko czekaj czekaj. czy to nie jest tak, że model to jest własnie baza danych? przecież DAL jest właśnie warstwą programowalną modelu. to do niej kontroler musi wysłać dane i powiedzieć co z nimi zrobić. Nie możesz mówić, że kontroler ma być nieświadomy modelu bo on musi model poprosić o konkretne dane, albo konkretne dane mu przekazać.


Może źle się wyraziłem. Kontroler nie powinien być świadomy charakteru modelu. Co kontrolerowi do tego czy wysłać maila potwierdzającego czy nie? Albo co kontrolerowi do tego czy dane są pobierane z bazy czy z pliku xml? Kontroler reaguje na sygnał z UI, sprawdza jego poprawność i przekazuje dalej, nic poza tym. Po prostu cała logika biznesowa powinna być zawarta w modelu. Może bardziej obrazowy przykład:

Użytkownik za pomocą programu chce włączyć drukarkę. Klika przycisk. Informacja wędruje do kontrolera który sprawdza czy to na pewno dobry przycisk. Jeśli tak wywołuje komendę "włącz drukarkę" na modelu który w tym przykładzie jest fizyczną drukarką i oczekuje na informację zwrotną czy drukarka się włączyła czy nie. I nic poza tym, kontroler nie zajmuje się inicjalizacją wszystkich podzespołów i protokołów drukarki, drukarka robi to sama. Dzięki temu gdy kupimy nową drukarkę innej firmy nie musimy przepisywać całego kontrolera, tylko podpinamy ją pod już istniejący i będzie działała jak trzeba bo cała logika specyficzna dla danej drukarki jest zamknięta w samej drukarce, czyli naszym modelu.

Mam nadzieję że to co napisałem jest zrozumiałe (IMG:style_emoticons/default/smile.gif)

Aha. Co do modelu będącego jednocześnie DAL czyli bazą danych. W prostych aplikacjach to może działać ale w dużych nie ma szans. Prosty przykład z systemu który rozwijamy w mojej firmie - mamy kilka rodzajów użytkowników, każdego opisuje około 5 tabel, z których tylko 3 są wspólne. Powiedz mi jak to obsłużyć korzystając tylko z DAL (IMG:style_emoticons/default/tongue.gif)

Ten post edytował dr4ko 15.10.2009, 15:27:05
Go to the top of the page
+Quote Post

Posty w temacie
- perhydrol   [PHP]podział na klasy   13.10.2009, 14:43:03
- - thek   MVC robią dokładnie to co sugeruje nazwa. Różnica ...   13.10.2009, 15:10:22
- - perhydrol   dzięki wielkie "thek" za zrozumiały opis...   14.10.2009, 21:12:17
- - jmail   hmmmmm. zdaje mi się czy pomyliliśmy pojęcia MVC? ...   14.10.2009, 21:22:04
- - perhydrol   wiec tak dla sprostowania, pojęć nie pomyliłem, mo...   14.10.2009, 22:52:33
- - thek   Zauważ, że przykładową klasą Użytkownik mieszasz j...   15.10.2009, 08:24:26
- - jmail   Cytat(thek @ 15.10.2009, 09:24:26 ) Z...   15.10.2009, 11:53:12
|- - dr4ko   Cytat(jmail @ 15.10.2009, 12:53:12 ) ...   15.10.2009, 14:55:42
- - fenix.robi   Ja proponuje skorzystać z fameworka CAKE'a, kt...   15.10.2009, 14:25:54
- - thek   To może jmail wyjaśnię dlaczego podałem taki a nie...   15.10.2009, 14:27:19
- - jmail   nie no to są dwie zupełnie różne rzeczy. Jeżeli ...   15.10.2009, 14:55:11
- - jmail   dr4ko czekaj czekaj. czy to nie jest tak, że model...   15.10.2009, 15:03:40
|- - dr4ko   Cytat(jmail @ 15.10.2009, 16:03:40 ) ...   15.10.2009, 15:18:10
- - jmail   no i właśnie o to chodzi. model jest tylko zbiorem...   15.10.2009, 15:24:37
- - dr4ko   Logika biznesowa powinna być zawarta w modelu, a k...   15.10.2009, 15:50:59
- - jmail   to jest Twoja opinia. moja jest taka, że jeżeli wp...   15.10.2009, 16:01:21
|- - phpion   Cytat(jmail @ 15.10.2009, 17:01:21 ) ...   16.10.2009, 12:11:49
- - dr4ko   Ok, ja się poddaję, nauczyciel ze mnie kiepski. Al...   15.10.2009, 16:23:39
- - thek   Dr4co ma IHMO rację. Przyłącze się do przykładu z ...   15.10.2009, 16:28:05
- - jmail   ale chwilę. To co dałeś to jest modyfikacja pure M...   15.10.2009, 16:29:36
- - dr4ko   Bzdura. To co podałem to jest najczystsze MVC jaki...   15.10.2009, 16:41:26
- - jmail   to jak chcesz zrobić logikę biznesową bez bazy dan...   15.10.2009, 16:54:35
- - dr4ko   A gdybym chciał zrobić aplikację obliczeniową? Np ...   15.10.2009, 18:10:32
- - jmail   no to teraz sam sobie zaprzeczasz. kalkulator albo...   15.10.2009, 18:13:04
|- - dr4ko   Cytat(jmail @ 15.10.2009, 19:13:04 ) ...   15.10.2009, 21:13:01
- - thek   jmail... my mówimy teraz o braku danych czy braku ...   15.10.2009, 20:24:18
- - perhydrol   Panowie, czytam wasze wypowiedzi i osobiście każdą...   15.10.2009, 21:51:04
- - dr4ko   Spoko, chodzi przecież o to żebyś zrozumiał. Jest ...   15.10.2009, 22:27:26
- - perhydrol   właśnie się zastanawiałem czy rozbijać MailSender_...   15.10.2009, 23:00:22
- - jmail   no dr4ko wreszcie się z czymś zgadzamy potwierdż...   16.10.2009, 00:12:59
- - thek   Dla mnie termin baza danych jest jednoznaczny i st...   16.10.2009, 11:01:45
- - dr4ko   Idealną sytuacją by było gdyby ani kontroler ani m...   16.10.2009, 12:04:50


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 Aktualny czas: 15.10.2025 - 07:15